Сворачивание строк фрейма данных

У меня есть фрейм данных:

> a
  GID         1          2           3          4           5          6           7          8          9          10
1   A 0.2616485 -0.1521032 -0.01281316 0.05029606 -0.01940657  0.1624178  0.14714370 0.08642461 -0.1191233 -0.01845165
2   A 0.0000000  0.0000000  0.00000000 0.00000000  0.00000000  0.0000000  0.00000000 0.00000000  0.0000000  0.00000000
3   B 0.1107565  0.1632392 -0.08760204 0.04475998 -0.10835387 -0.0827655 -0.08058794 0.15288650 -0.1120538 -0.02297707
4   B 0.0000000  0.0000000  0.00000000 0.00000000  0.00000000  0.0000000  0.00000000 0.00000000  0.0000000  0.00000000

И я ищу способ получить новый фрейм данных (b), который суммирует строки фрейма данных a по столбцу GID в a:

> b
  GID         1          2           3          4           5          6           7          8          9          10
1   A 0.2616485 -0.1521032 -0.01281316 0.05029606 -0.01940657  0.1624178  0.14714370 0.08642461 -0.1191233 -0.01845165
3   B 0.1107565  0.1632392 -0.08760204 0.04475998 -0.10835387 -0.0827655 -0.08058794 0.15288650 -0.1120538 -0.02297707 

Желательно использовать базовый раствор.


person user1701545    schedule 27.11.2013    source источник


Ответы (1)


Используйте 1_:

aggregate(.~GID,data=dat,sum)

ИЗМЕНИТЬ

Для повышения производительности вы можете попробовать data.table:

library(data.table)
DT <- as.data.table(dat)

DT[,lapply(.SD,sum),by='GID']
person agstudy    schedule 27.11.2013
comment
Спасибо за помощь. Очевидно, это работает, но кажется очень неэффективным для размеров моего data.frame (несколько строк по 100000 столбцов). Есть что-нибудь быстрее? - person user1701545; 30.11.2013