r - R 中不同类型的聚合

标签 r dataframe sum aggregate

我有一个如下所示的数据框:

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/

相关文章:

jquery如何将一个类的多个节点的值相加,并输出最终值?

r - 将多个数据帧写入同一个 json 对象

R - 以编程方式检测 NA 列并返回字符串

r - 在for循环R中使用下一个错误

r - 将两列绘制为条形图,将第三列绘制为折线图 ggplot

r - 将 R 中的两个列表组合成一个数据框

python - 将函数应用于 DataFrame 中的每个单元格,该单元格取决于 pandas 中的列名称

python - 如何使用 `xarray.DataArray` 索引器更新 `.sel()`?

php - 使用 array_sum() 除了最后一个值

matlab - 在 matlab 中求和矩阵(有一个扭曲)