根据条件在数据框的单元格中添加值

时间:2014-02-25 16:31:59

标签: r dataframe

我有一张看起来像这样的表,

ID    c1    c2    c3    c4
A     23    12    45    63
A     3     1     6     17
B     3     1     4     6
B     2     2     5     3

我想最终得到类似的东西,

ID    c1    c2    c3    c4
A     26    13    51    80
B     5     3     9     9

其中,每个单元格是映射到相同id的值的总和。

我想用R.解决这个问题。有什么想法吗?我知道如果想要对列中的所有值求和,我可以使用colsums,但我不确定如何根据标准对值进行求和。

任何帮助将不胜感激。

拉​​姆

P.S:我的实际表有45000行和72列。

3 个答案:

答案 0 :(得分:3)

尝试

aggregate( . ~ ID, data = x, FUN = sum)

  ID c1 c2 c3 c4
1  A 26 13 51 80
2  B  5  3  9  9

答案 1 :(得分:2)

plyr

的另一种方式
library(plyr)
ddply(x, .(ID), numcolwise(sum))

  ID c1 c2 c3 c4
1  A 26 13 51 80
2  B  5  3  9  9

答案 2 :(得分:2)

更快的选择:

library(data.table)
dt = data.table(df)

dt[, lapply(.SD, sum), by = ID]
#   ID c1 c2 c3 c4
#1:  A 26 13 51 80
#2:  B  5  3  9  9