2013-11-27 63 views
0

我有一个数据帧,:折叠数据帧行

> 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)在由GID总结数据帧的行列中的一个:

> 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 

优选地使用基础解决方案。

回答

4

使用aggregate

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

编辑

为了获得更好的性能,可以尝试data.table

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

DT[,lapply(.SD,sum),by='GID'] 
+0

感谢您的帮助。显然这可以工作,但对于我的data.frame(几行100000列)的维度看起来效率很低。有什么更快的吗? – user1701545