R:如何计算每个组和所有数据的摘要?

时间:2016-11-23 03:20:48

标签: r dataframe dplyr tidyverse

我认为以下任务经常出现:计算每个组和所有数据的摘要,并在一个数据框中显示结果。例如,对于虹膜数据帧,我们可以计算每个物种的每列的平均值:

library(tidyverse)
df_groups <- iris %>% 
    group_by(Species) %>%
    summarise_at(vars(-Species), mean)

>df_groups
# A tibble: 3 × 5
     Species Sepal.Length Sepal.Width Petal.Length Petal.Width
      <fctr>        <dbl>       <dbl>        <dbl>       <dbl>
1     setosa        5.006       3.428        1.462       0.246
2 versicolor        5.936       2.770        4.260       1.326
3  virginica        6.588       2.974        5.552       2.026

我们可以计算所有物种的每列的平均值,并将唯一的行称为“所有物种”:

df_all <- iris %>%
    summarise_at(vars(-Species), mean) %>% 
    mutate(Species='All Species')

> df_all
  Sepal.Length Sepal.Width Petal.Length Petal.Width     Species
1       5.8433      3.0573        3.758      1.1993 All Species

最后,通过绑定两个数据帧,我们获得了所需的输出:

df_all %>% bind_rows(df_groups) %>% 
     select(Species, everything()) # make Species the first column

      Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 All Species       5.8433      3.0573        3.758      1.1993
2      setosa       5.0060      3.4280        1.462      0.2460
3  versicolor       5.9360      2.7700        4.260      1.3260
4   virginica       6.5880      2.9740        5.552      2.0260

我的问题是:所有这些都可以在一个管道中完成(无需创建两个数据帧然后绑定它们)吗?

0 个答案:

没有答案