如何合并重复行(使用多列)并显示其他列

时间:2016-07-26 14:13:02

标签: r dplyr aggregate plyr

我有这样的数据框:

ID   A   B   C   D
1    1   0   x1  y
1    0   0   x1  y
1    0   0   x1  y
2    0   0   x6  v
2    0   1   x6  v
2    0   0   x6  v
3    0   1   r5  t
3    1   0   r5  t
3    0   0   r5  t

列ID是唯一的,我想通过显示max或sum来删除所有重复和聚合的列A和B(对于A或B列中的每个ID,最多只能有一个' 1')显示所有唯一ID具有相同值的列C和D.

ID   A   B   C   D
1    1   0   x1  y
2    0   1   x6  v
3    1   1   r5  t

使用

aggregate(A~ID,data=df,FUN=sum)

我只获得ID和A列但是如何在同一时间聚合A和B并且还显示C和D列

1 个答案:

答案 0 :(得分:2)

您可以使用.汇总列AB,并指定CD作为组变量,如果您希望它们显示在结果:

aggregate(. ~ ID + C + D,data=df,FUN=sum)
#   ID  C D A B
# 1  3 r5 t 1 1
# 2  2 x6 v 0 1
# 3  1 x1 y 1 0

另一个技巧是使用cbind明确指定要聚合的列:

aggregate(cbind(A, B) ~ ID + C + D,data=df,FUN=sum)

给出相同的结果。