我有以下数据框:
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/