r语言 - 单个 dplyr 管道内的group_by和全局平均值



有没有办法使用 dplyr group_by()进行汇总,然后取全局平均值,然后将其添加到同一数据框中,而无需创建第二个数据框?

现在我是这样做的:

library(dplyr)
speciesiris <- iris %>%
  group_by(Species) %>%
  summarise(mpw=mean(Petal.Width)) 
iris %>%
  summarise(mpw=mean(Petal.Width)) %>%
  mutate(Species="All Species") %>%
  bind_rows(speciesiris)

这里一个潜在的陷阱是,我想要的不是均值,而是全局均值或至少两者兼而有之。那么有没有更好的方法可以希望在一个管道中做到这一点呢?

一行即可完成所有操作(但不推荐):

iris %>% summarise(mpw=mean(Petal.Width))        # Global mean
     %>% mutate(Species="All Species")
     %>% bind_rows(
            iris %>% group_by(Species)           # Mean by Species
                 %>% summarise(mpw=mean(Petal.Width))
                  )

最新更新