【问题标题】:Collapsing data frame rows折叠数据框行
【发布时间】:2013-12-13 19:59:40
【问题描述】:

我有一个数据框,a:

> 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 的行与 a 中的 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 

最好使用基础溶液。

【问题讨论】:

    标签: r dataframe collapse


    【解决方案1】:

    使用aggregate:

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

    编辑

    为了更好的性能,你可以试试data.table

    library(data.table)
    DT <- as.data.table(dat)
    
    DT[,lapply(.SD,sum),by='GID']
    

    【讨论】:

    • 感谢您的帮助。显然这是可行的,但对于我的 data.frame 的维度(几行乘 100000 列)来说似乎效率很低。有什么更快的吗?
    猜你喜欢
    • 2015-03-12
    • 2017-09-16
    • 2016-07-07
    • 2018-09-25
    • 2021-11-08
    • 2012-10-04
    • 2016-12-22
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多