Это связано с этим вопросом, который я просмотрел How to summarize by group?, однако, похоже, что мои данные немного отличаются друг от друга, что делает вещи странными. У меня есть data.frame DF как так:R: сумма путем подсчета по нескольким столбцам
X Y1 Y2 Y3 Y4
3 A A B A
2 B B A A
1 B A A A
Я хочу сделать что-то вроде взвешенной суммы каждого уникального фактора Y его числового значения в X, так что выход есть:
Y Y1 Y2 Y3 Y4
A 3 4 3 6
B 3 2 3 0
Я попытался использовать цикл for для итерации по индексам столбцов, но я не смог правильно передать число Y, и это не похоже на R-способ сделать это эффективно, для еще много столбцов и строк.
Похоже, что в соответствии с связанным вопросом это правильный подход, однако, когда я пытаюсь расширить, чтобы сделать то же самое во всех столбцах, через group_by и summaryise, я получаю ошибки, так как факторы Y являются факторами. Должен ли я использовать «применить» вместо этого? Логика этого кажется прямой, но я был в тупике в ее реализации.
aggregate(X~Y1,DF,sum)
Я не видел 'xtabs' решение по @thelatemail, которое приятно –
Постарайся сделать' 'df' с data.table' объект первой через' setDT (DF) '- Я только что протестировал код снова, и он работает нормально. – thelatemail