Buenas para tod en s, tengo una consulta para poder optimizar tiempos. Ejemplo tengo el siguiente dataframe: distrito<-c("A","A","A","B","B","B","C","C","C","A","A","B","B","C") Sex<-c("M","F","M","F","M","F","M","F","M","F","M","F","M","F") Edad<-c(25,36,25,25,25,19,36,39,36,65,54,25,28,28) Ingreso<-c(125,365,265,987,690,369,325,369,789,854,254,268,698,258) Aporte <- c(3,6,3,6,9,6,9,7,9,7,4,8,2,8) datos<-data.frame(distrito=distrito,Sex=Sex,Edad=Edad,Ingreso=Ingreso,Aporte=Aporte) Quiero aplicar la function *summarise *del paquete *dplyr *a las 3 variables númericas. Para la variable Aporte por ejemplo: descrip<-function(data) { grupos <- group_by(data, distrito) result <- summarise(grupos, media = mean(Aporte), maximo = max(Aporte), minimo = min(Aporte), desvio= sd(Aporte) ) return(result) } Pero me gustaría automatizarla para que corra para todas las variables del dataframe (3 en este caso pero van a ser mas de 23). Sugerencias??? Muchas gracias -- [[alternative HTML version deleted]]
Hola, Andrés: Con dplyr tienes todas las variantes de 'summarise' para hacer lo que dices. Por ejemplo, puedes elegir en qué variables quieres aplicarlo con 'summarise_at' o definir una condición con 'summarise_if'. * Para aplicar las funciones que definas sobre esas tres variables: datos %>% group_by(distrito) %>% summarise_at(vars(Aporte, Ingreso, Edad), funs(media = mean, maximo = max, minimo = min, desvio = sd)) * Para aplicar esas funciones sobre todas las variables numéricas que tengas: datos %>% group_by(distrito) %>% summarise_if(is.numeric, funs(media = mean, maximo = max, minimo = min, desvio = sd)) Un saludo Álvaro El 10/02/18 a las 17:09, Andrés Hirigoyen escribió:> Buenas para tod en s, tengo una consulta para poder optimizar tiempos. Ejemplo > tengo el siguiente dataframe: > > distrito<-c("A","A","A","B","B","B","C","C","C","A","A","B","B","C") > Sex<-c("M","F","M","F","M","F","M","F","M","F","M","F","M","F") > Edad<-c(25,36,25,25,25,19,36,39,36,65,54,25,28,28) > Ingreso<-c(125,365,265,987,690,369,325,369,789,854,254,268,698,258) > Aporte <- c(3,6,3,6,9,6,9,7,9,7,4,8,2,8) > datos<-data.frame(distrito=distrito,Sex=Sex,Edad=Edad,Ingreso=Ingreso,Aporte=Aporte) > > Quiero aplicar la function *summarise *del paquete *dplyr *a las 3 > variables númericas. > Para la variable Aporte por ejemplo: > > descrip<-function(data) { > grupos <- group_by(data, distrito) > result <- > summarise(grupos, > media = mean(Aporte), > maximo = max(Aporte), > minimo = min(Aporte), > desvio= sd(Aporte) > ) > return(result) > } > > Pero me gustaría automatizarla para que corra para todas las variables del > dataframe (3 en este caso pero van a ser mas de 23). > Sugerencias??? > > Muchas gracias > -- > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola, ¿qué tal? Puedes probar melt >> summarize >> dcast Así no tienes que teclear el nombre de las 23 variables numéricas. Un saludo, Carlos J. Gil Bellosta http://ww.datanalytics.com El sáb., 10 feb. 2018 a las 17:41, Álvaro Hernández (<alvarohv en um.es>) escribió:> Hola, Andrés: > > Con dplyr tienes todas las variantes de 'summarise' para hacer lo que > dices. Por ejemplo, puedes elegir en qué variables quieres aplicarlo con > 'summarise_at' o definir una condición con 'summarise_if'. > > * Para aplicar las funciones que definas sobre esas tres variables: > > datos %>% > group_by(distrito) %>% > summarise_at(vars(Aporte, Ingreso, Edad), > funs(media = mean, maximo = max, minimo = min, desvio > sd)) > > * Para aplicar esas funciones sobre todas las variables numéricas que > tengas: > > datos %>% > group_by(distrito) %>% > summarise_if(is.numeric, > funs(media = mean, maximo = max, minimo = min, desvio > sd)) > > Un saludo > Álvaro > > El 10/02/18 a las 17:09, Andrés Hirigoyen escribió: > > Buenas para tod en s, tengo una consulta para poder optimizar tiempos. > Ejemplo > > tengo el siguiente dataframe: > > > > distrito<-c("A","A","A","B","B","B","C","C","C","A","A","B","B","C") > > Sex<-c("M","F","M","F","M","F","M","F","M","F","M","F","M","F") > > Edad<-c(25,36,25,25,25,19,36,39,36,65,54,25,28,28) > > Ingreso<-c(125,365,265,987,690,369,325,369,789,854,254,268,698,258) > > Aporte <- c(3,6,3,6,9,6,9,7,9,7,4,8,2,8) > > > datos<-data.frame(distrito=distrito,Sex=Sex,Edad=Edad,Ingreso=Ingreso,Aporte=Aporte) > > > > Quiero aplicar la function *summarise *del paquete *dplyr *a las 3 > > variables númericas. > > Para la variable Aporte por ejemplo: > > > > descrip<-function(data) { > > grupos <- group_by(data, distrito) > > result <- > > summarise(grupos, > > media = mean(Aporte), > > maximo = max(Aporte), > > minimo = min(Aporte), > > desvio= sd(Aporte) > > ) > > return(result) > > } > > > > Pero me gustaría automatizarla para que corra para todas las variables > del > > dataframe (3 en este caso pero van a ser mas de 23). > > Sugerencias??? > > > > Muchas gracias > > -- > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]