我有这样的数据框:
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列
答案 0 :(得分:2)
您可以使用.
汇总列A
和B
,并指定C
和D
作为组变量,如果您希望它们显示在结果:
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)
给出相同的结果。