dplyr summarise_each()使用多个函数来处理相同组中的不同列子集

Cot*_*ood 6 r dplyr

我想summarise_each()用来将多个函数应用于分组数据集.但是,我不想将每个函数应用于所有列,而是将每个函数应用于特定的子集.我意识到我可以通过指定每个列来实现这一点summarise(),但我有很多变量.

是否有替代方案1)使用summarise_each()然后删除不需要的列或2)保存group_by()结果,执行多个单独的summarise_each()操作并组合结果?

如果不清楚,请告诉我,我可以尝试用一些示例代码来说明.

小智 1

我建议如下:在这里,我想将 min 函数应用于一个变量,将 max 函数应用于其他变量。然后我只需将它们与分组变量合并。

> by_species <- iris %>% group_by(Species)    
Run Code Online (Sandbox Code Playgroud)

从我想要应用 min 函数的变量开始:

min_var <- by_species %>% summarise_each(funs(min), Petal.Width) min_var 来源:本地数据框 [3 x 2]

      Species Petal.Width
       (fctr)       (dbl)
1     setosa         0.1
2 versicolor         1.0
3  virginica         1.4
Run Code Online (Sandbox Code Playgroud)

然后是我要应用 max 函数的变量:

max_var <- by_species %>% summarise_each(funs(max), Sepal.Width) max_var 来源:本地数据框 [3 x 2]

     Species Sepal.Width
      (fctr)       (dbl)
 1     setosa         4.4
 2 versicolor         3.4
 3  virginica         3.8
Run Code Online (Sandbox Code Playgroud)

现在,我们将上面两个合并:

left_join(min_var,max_var) 连接方式:“物种” 来源:本地数据框 [3 x 3]

      Species Petal.Width Sepal.Width
     (fctr)       (dbl)       (dbl)
1     setosa         0.1         4.4
2 versicolor         1.0         3.4
3  virginica         1.4         3.8
Run Code Online (Sandbox Code Playgroud)