mutate funcion filtrar datos buscarv agrupar r dplyr

filtrar - funcion select en r



¿Cómo puedo usar dplyr para aplicar una función a todas las columnas que no sean de group_by? (2)

Estoy tratando de usar el paquete dplyr para aplicar una función a todas las columnas en un data.frame que no están agrupados, lo que haría con aggregate() :

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

donde se aplica la mean a todas las columnas que no se utilizan para agrupar. (Sí, sé que puedo usar el agregado, pero estoy tratando de entender dplyr).

Puedo usar el summarize esta manera:

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

Pero, ¿hay una manera de tener mean() aplicado a todas las columnas que no están agrupadas, similar a la . ~ . ~ notación del aggregate() ? Tengo un data.frame con 30 columnas que quiero agregar, por lo que escribir las declaraciones individuales no es lo ideal.


Esto te llevará casi todo el camino en dplyr .

h = iris %.% group_by(Species) %.% do(function(d){ sapply(Filter(is.numeric, d), mean) }) as.data.frame(h)


Si está dispuesto a probar un dplyr experimental, puede probar el nuevo summarise_each() y aún el experimental) 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)

Comentarios muy apreciados!

Esto aparecerá en dplyr 0.2.