如何使用 dplyr 将函数应用于所有非 group_by 列?

2024-03-03

我正在尝试使用 dplyr 包将函数应用于 data.frame 中未分组的所有列,我将使用aggregate():

aggregate(. ~ Species, data = iris, mean)

where mean应用于所有未用于分组的列。 (是的,我知道我可以使用聚合,但我试图理解 dplyr。)

我可以用summarize像这样:

species <- group_by(iris, Species)
summarize(species,
          Sepal.Length = mean(Sepal.Length),
          Sepal.Width = mean(Sepal.Width))

但有没有办法拥有mean()应用于all未分组的列,类似于. ~的符号aggregate()?我有一个包含 30 列的 data.frame,我想要聚合这些列,因此写出各个语句并不理想。


如果您愿意尝试实验性的 dplyr,您可以尝试 新的(仍处于实验阶段)summarise_each():

devtools::install_github("hadley/dplyr", ref = "colwise")

library(dplyr)
iris %.%
  group_by(Species) %.%
  summarise_each(funs(mean))
## Source: local data frame [3 x 5]
## 
##      Species Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1     setosa        5.006       3.428        1.462       0.246
## 2 versicolor        5.936       2.770        4.260       1.326
## 3  virginica        6.588       2.974        5.552       2.026

iris %.%
  group_by(Species) %.%
  summarise_each(funs(min, max))
## Source: local data frame [3 x 9]
## 
##      Species Sepal.Length_min Sepal.Width_min Petal.Length_min
## 1     setosa              4.3             2.3              1.0
## 2 versicolor              4.9             2.0              3.0
## 3  virginica              4.9             2.2              4.5
## Variables not shown: Petal.Width_min (dbl), Sepal.Length_max (dbl),
##   Sepal.Width_max (dbl), Petal.Length_max (dbl), Petal.Width_max (dbl)

非常感谢反馈!

这将出现在 dplyr 0.2 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 dplyr 将函数应用于所有非 group_by 列? 的相关文章

随机推荐