[R-es] aplicar función de cuantilas a un dataframe

morales en us.es morales en us.es
Mie Mar 17 08:50:06 CET 2010


Hola, perdón por el error en el fichero que os dejé. Ya lo he arreglado y os lo adjunto de nuevo con el valor  "LOW" corregido.  Sigo teniendo el problema de obtener varias cuantilas para cada variable estratificada. Solo puedo conseguir una cuantila de la siguiente forma:


 
> percen2 = function(x) {
+ quantile(x,probs = c(.10))
+ }
> percen2(example$recall)
10% 
 18 
> aggregate(example$recall, list(example$EDUCATION,example$Age),percen2)
  Group.1 Group.2    x
1    High      45 23.0
2     LOW      45 16.5
3    High      85 27.2
4     LOW      85 18.0
> 

Sin embargo, me gustaría conseguir juntos varios valores de cuantilas. Alguna sugerencia?

Saludos, 

M. Morales







----- Mensaje original -----
De: Jorge Ivan Velez <jorgeivanvelez en gmail.com>
Fecha: Martes, Marzo 16, 2010 11:28 pm
Asunto:  Re: [R-es] aplicar función de cuantilas a un dataframe
A: morales en us.es
CC: r-help-es en r-project.org


> Buenas tardes Manuel,
> 
> Muchas gracias por el ejemplo!
> 
> Lo que esta ocurriendo es que en una de las combinaciones EDUCATION - 
> Age no
> tienes observaciones, por lo que no es posible calcular los cuantiles 
> de
> recall en ese nivel. Por lo tanto obtienes:
> 
> # lo que quieres calcular
> with(example, aggregate(recall, list(EDUCATION, Age), quantile))
> # Error in aggregate.data.frame(as.data.frame(x), ...) :
> #  'FUN' must always return a scalar
> 
> De la siguiente manera puedes calcular el numero de observaciones por
> combinacion que menciono anteriormente:
> 
> # numero de observaciones en cada combinacion
> with(example, table(EDUCATION, Age))
> #         Age
> # EDUCATION 45 85
> #     High  5  3
> #     Low   1  0
> #     LOW   4  4
> 
> Cual es la diferencia entre "Low" y "LOW"?   Mi sugerencia seria 
> unificar el
> nivel educativo a uno de los dos y luego ejecutar nuevamente el analisis.
> 
> Espero sea de utilidad,
> 
>                              Jorge Ivan Velez
> 
> 
> 2010/3/16 <>
> 
> > Hola R-adictos,
> >
> > me gustaría que alguien me ayudara a aplicar la función "quantile" (varios
> > percentiles) a un marco de datos estratificado por algunas variables
> > categóricas (ver fichero adjunto como ejemplo). La idea es obtener varios
> > percentiles de varias variables (primeras columnas del fichero de datos),
> > pero dividiendo el marco de datos en función de los valores de las variables
> > categóricas (educación y edad, las dos últimas columnas del fichero 
> de
> > datos).
> >
> > Lo he intentado con aggregate y este es el resultado:
> >
> > example= read.table("example.txt",header=T)
> > aggregate(example$recall, list(example$EDUCATION,example$Age), mean)
> > aggregate(example$recall, list(example$EDUCATION,example$Age), quantile)
> >
> > > aggregate(example$recall, list(example$EDUCATION,example$Age), quantile)
> > Error en aggregate.data.frame(as.data.frame(x), ...) :
> >  'FUN' must always return a scalar
> >
> > Tambien he intentado crear una función para aplicarla, pero este ha 
> sido el
> > resultado:
> >
> > percen = function(x) {
> > quantile(x,probs = c(.05,.10,.20,.5,.6,.8,.95))
> > }
> > percen(example$recall)
> > aggregate(example$recall, list(example$EDUCATION,example$Age), percen)
> >
> > > aggregate(example$recall, list(example$EDUCATION,example$Age), percen)
> > Error en aggregate.data.frame(as.data.frame(x), ...) :
> >  'FUN' must always return a scalar
> >
> >
> > Alguna sugerencia? Gracias anticipadas
> >
> > Manuel
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > 
> >
> >
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: example.txt
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20100317/ab587e2f/attachment.txt>


Más información sobre la lista de distribución R-help-es