Re: [R-es] Optimizar función

2018-02-10 Por tema Carlos J. Gil Bellosta
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 ()
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@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@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> ___
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Optimizar función

2018-02-10 Por tema Álvaro Hernández

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@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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es