我有以下数据框:

df = data.frame(a = c(1,1,3,2,2), b=6:10)
##  a    b
##  1    6
##  1    7
##  3    3
##  2    9
##  2    10


我想按组分析数据(a是分组参数),但不是通常的分析(例如,每个值指定一组行,而这些组不相交),我需要“累积组”。也就是说,对于a = i的值,该组应包含a
因此,例如,如果对于每个组我都想要b的均值,则结果将是:

##    a    mean_b
##    1    6.5
##    2    8
##    3    7


请注意,在此简化示例背后的实际场景中,我无法单独分析不相交的组,然后再汇总相关的组。 summary函数必须“知道”该组中的所有行以执行计算。

因此,当然,我可以使用一些应用函数并以良好的旧方法计算事物,并从中创建新的df,但是我会寻找类似dplyr / tidyverse的函数来实现。

有什么建议?

最佳答案

这样的事情怎么样?

library(dplyr)

df %>%
 arrange(a) %>%
 group_by(a) %>%
 summarise(sum_b = sum(b)) %>%
 ungroup() %>%
 mutate(sum_b = cumsum(sum_b))

#     a sum_b
#  <dbl> <int>
#1    1.    13
#2    2.    32
#3    3.    40


我们按组(sum)取a,然后取累加总和加上下一个组中该组的上一个值。

关于r - 累积分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53581633/

10-12 22:51