group_by和单个dplyr管道中的全局平均值

时间:2016-02-29 18:29:56

标签: r dplyr

是否有办法使用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)

这里的一个潜在缺陷是,我不想要手段的平均值,而是全局手段,或者至少是两者的选择。那么有一种更好的方法可以在一个管道中做到这一点吗?

1 个答案:

答案 0 :(得分:2)

一条线做任何事情(但不推荐):

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))
                  )