得到了一个df:
ID Val1 Val2 Val3
A 1 1 1
A 1 1 1
A 1 1 1
B 0 0 1
我想根据唯一的ID值获取所有列的总和。像这样:
ID Val1 Val2 Val3
A 3 3 3
B 0 0 1
我试过了:
df %>% group_by(ID) %>% summarise_all(funs(sum()))
任何人都有关于我'我做错了?我更喜欢dplyr方法(如果可能的话)。
答案 0 :(得分:3)
您需要在sum
之后删除括号,即您的代码应为:
df %>% group_by(ID) %>% summarise_all(funs(sum))
在这种情况下键入sum()
调用函数,而只传递函数名称将其发送给summarise_all
使用。说“在这里和现在使用这个功能”,“将函数作为参数传递给其他函数”之间的区别。同样,键入?sum
会为您提供该功能的文档,但?sum()
无效。
答案 1 :(得分:0)
编辑*:
我不知道使用dplyr
的解决方案,但如果感兴趣,我会使用plyr
做另一个解决方案。
你有:
df=data.frame(id=c("A","A","A","B"), Val1=c(1,1,1,0), Val2=c(1,1,1,0),Val3=c(1,1,1,1))
> df
id Val1 Val2 Val3
1 A 1 1 1
2 A 1 1 1
3 A 1 1 1
4 B 0 0 1
使用plyr libray
> library(plyr)
> ddply(df,.(id),summarize,Val1=sum(Val1),Val2=sum(Val2),Val3=sum(Val3))
输出:
id Val1 Val2 Val3
1 A 3 3 3
2 B 0 0 1