Я хочу взять значения из столбца Su
в data.frame df
и создать новые столбцы с процентами от строки по отношению к соответствующим категориям во всех строках в Ca
, Tr
, Sa
и ST
Чтобы перейти от этого:
Ca Sa ST Tr Su
A T1 S cn 3.2
A T2 S ct 1.7
C T1 S sn 2.1
H T3 R ct 1.4
К этому:
Ca Sa ST Tr Su p_Sa p_ST p_Tr p_Ca
A T1 S cn 3.2 60.4 45.7 100.0 65.3
A T2 S ct 1.7 100.0 24.2 54.8 34.7
C T1 S sn 2.1 39.6 30.0 100.0 100.0
H T3 R ct 1.4 100.0 100.0 45.2 100.0
где p_Sa рассчитывается как 100 * (значение Su) / (сумма всех строк, имеющих одинаковый шаблон в столбце Sa), или - для первой записи: (100 * (3.2 / (3.2 + 2.1)));p_ST = 100 * (значение Su) / (сумма всех строк, имеющих одинаковый шаблон в столбце ST) и т. д. и т. д.
Я пытался использовать ddply(df, .(Sa), transform, perc.Sa=Su/sum(Su))
, но, думаю, возможно, я используюэто неправильно, и я получаю эту ошибку на моем собственно df, который имеет гораздо больше строк и несколько дополнительных столбцов, чем в примере выше:
Error: Column indexes must be at most 10 if positive, not 17, 35, 64, 79, 108, 128, 145, 173, 189, 230, 244, 255, 296, 310, 337, 353, 374, 408, 418, 441, 477, 493, 525, 551
Большое спасибо за любую помощь.