[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