gpt4 book ai didi

r - dplyr group_by 和 cummean 函数

转载 作者:行者123 更新时间:2023-12-02 07:47:59 26 4
gpt4 key购买 nike

我期望下面的代码输出一个三行的数据框,每行代表计算每组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)

最佳答案

require("dplyr")

mtcars %>%
arrange(cyl) %>%
group_by(cyl) %>%
mutate(running.mean.mpg = cummean(mpg)) %>%
select(cyl, running.mean.mpg)

# Source: local data frame [32 x 2]
# Groups: cyl
#
# # cyl running.mean.mpg
# # 1 4 22.80000
# # 2 4 23.60000
# # 3 4 23.33333
# # 4 4 25.60000
# # 5 4 26.56000
# # 6 4 27.78333
# # 7 4 26.88571
# # 8 4 26.93750

为了进行实验,这也适用于 data.table。我的意思是,您还必须加载 dplyr 才能使用 cummean() 。

require("data.table")
DT <- as.data.table(mtcars)
DT[,j=list(
running.mean.mpg = cummean(mpg)
), by="cyl"]

关于r - dplyr group_by 和 cummean 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com