首页 > 解决方案 > 将相同的功能应用于所有列

问题描述

使用 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). 但是在这里,我想要每个组的方法。

标签: rdplyr

解决方案


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

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

推荐阅读