我希望下面的代码输出一个包含三行的数据框,每行代表计算每组 cyl
的平均值后的mpg累积平均值:
library(dplyr)
mtcars %>%
arrange(cyl) %>%
group_by(cyl) %>%
summarise(running.mean.mpg = cummean(mpg))
这就是我预期会发生的事情:
mean_cyl_4 <- mtcars %>%
filter(cyl == 4) %>%
summarise(mean(mpg))
mean_cyl_4_6 <- mtcars %>%
filter(cyl == 4 | cyl == 6) %>%
summarise(mean(mpg))
mean_cyl_4_6_8 <- mtcars %>%
filter(cyl == 4 | cyl == 6 | cyl == 8) %>%
summarise(mean(mpg))
data.frame(cyl = c(4,6,8), running.mean.mpg = c(mean_cyl_4[1,1], mean_cyl_4_6[1,1], mean_cyl_4_6_8[1,1]))
cyl running.mean.mpg
1 4 26.66364
2 6 23.97222
3 8 20.09062
为什么 dplyr
似乎忽略 group_by(cyl)
?
3 回答
为了实验,这也适用于
data.table
. 我的意思是,你必须加载dplyr才能使cummean()
可用 .使用
mutate
而不是summarise
.这可以按你的需要工作 .