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

时间:2016-01-16 00:56:10

标签: r dplyr

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

  

min_var&lt; - by_species%&gt;%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&lt; - by_species%&gt;%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