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

问题描述 投票:6回答:1

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

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

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

r dplyr
1个回答
1
投票

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

> by_species <- iris %>% group_by(Species)    

从我想要应用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

然后我想要应用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

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

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
© www.soinside.com 2019 - 2024. All rights reserved.