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

R 根据条件在数据帧的单元格中添加值,r,dataframe,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 c1 c

我有一张像这样的桌子

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    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,但我不确定如何根据条件对值求和

任何帮助都将不胜感激

公羊

注意:我的实际表有45000行和72列。

试试看

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

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

另一种方法是使用
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

对于更快的替代方案:

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