我有一个如下所示的数据框:
sub = c("X001","X001", "X001","X002","X002","X001","X002","X001","X002","X002","X002","X002")
revenue = c(20, 15, -10,-25,20,-20, 17,9,14,12, -9, 11)
df = data.frame(sub, revenue)
我想以这样的方式聚合它,第二列应显示子所有收入的总和,第三列应显示绝对值的总和,第四列应显示所有正值的总和,第五列应显示所有负值的总和。
结果应如下所示:
Sub All Sum Absolute Sum Positive Sum Negative Sum
X001 14 74 44 -30
X002 40 108 74 -34
我编写了计算总和的代码:
y<-aggregate(df$revenue, by=list(Feature=x$Sub), FUN=sum)
如果对 R 更了解的人能帮助我计算其他三列,我将非常感激。
最佳答案
以下是使用 dplyr 执行此操作的方法:
library(dplyr)
df%>%
group_by(sub)%>%
summarise(All_Sum=sum(revenue),Absolute_Sum=sum(abs(revenue)),
Positive_Sum=(sum(revenue[revenue>0])),Negative_Sum=(sum(revenue[revenue<0])))
sub All_Sum Absolute_Sum Positive_Sum Negative_Sum
<fctr> <dbl> <dbl> <dbl> <dbl>
1 X001 14 74 44 -30
2 X002 40 108 74 -34
关于r - R 中不同类型的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43577225/