将相同的功能应用于所有列

时间:2018-08-08 13:02:19

标签: r dplyr

使用Tidyverse,是否有告诉summarise对所有列应用相同功能的快捷方式?例如,是否有一种方法可以在不拼写所有列名的情况下获得以下结果? (在我正在使用的数据集中,有更多列。)

> library(tidyverse)
> mtcars %>% group_by(cyl) %>% summarise(mpg=mean(mpg), disp=mean(disp),
   hp=mean(hp), drat=mean(drat), wt=mean(wt), qsec=mean(qsec), vs=mean(vs),
  am=mean(am), gear=mean(gear), carb=mean(carb))
# A tibble: 3 x 11
    cyl   mpg  disp    hp  drat    wt  qsec    vs    am  gear  carb
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1     4  26.7  105.  82.6  4.07  2.29  19.1 0.909 0.727  4.09  1.55
2     6  19.7  183. 122.   3.59  3.12  18.0 0.571 0.429  3.86  3.43
3     8  15.1  353. 209.   3.23  4.00  16.8 0     0.143  3.29  3.5 

如果我想要整个表的平均值,则可以使用sapply(mtcars, mean)。但是在这里,我想要每个小组的钱。

1 个答案:

答案 0 :(得分:1)

我们可以使用summarise_all将函数应用于所有列

library(dplyr)
mtcars %>%
     group_by(cyl) %>%
     summarise_all(mean, na.rm = TRUE)