Skip to content

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

9 messages · Javier Muñoz, Jorge I Velez, Carlos J. Gil Bellosta +1 more

#
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)
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)
Error en aggregate.data.frame(as.data.frame(x), ...) : 
  'FUN' must always return a scalar


Alguna sugerencia? Gracias anticipadas

Manuel 






 

------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: example.txt
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20100316/5cb898e7/attachment-0001.txt>
#
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:
+ quantile(x,probs = c(.10))
+ }
10% 
 18
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
------------ 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>
#
Hola Javier, muchisimas gracias!!  Funciona perfectamente tanto la función "by" como la función para convertirla en un data frame.

Saludos, 

M. Morales

----- Mensaje original -----
De: Javier Muñoz <javimunozlara en gmail.com>
Fecha: Miércoles, Marzo 17, 2010 9:43 ombr
Asunto:  Re: [R-es] aplicar función de cuantilas a un dataframe
A: morales en us.es
CC: Jorge Ivan Velez <jorgeivanvelez en gmail.com>, r-help-es en r-project.org
#
Muchas gracias Jorge. Tanto tu procedimiento como el de Javier me valen.

Saludos cordiales,

M. Morales


----- Mensaje original -----
De: Jorge Ivan Velez <jorgeivanvelez en gmail.com>
Fecha: Miércoles, Marzo 17, 2010 3:53 pm
Asunto:  Re: Re: [R-es] aplicar función de cuantilas a un dataframe
A: morales en us.es
CC: r-help-es en r-project.org
#
Hola, ¿qué tal?

Respondo tarde y para darle gran lanzada alternativa al moro muerto:

library( doBy )
summaryBy( recall ~ EDUCATION + Age, data = example, FUN = function( x
) quantile( x, c( 0.25, 0.75 )) )

Siempre he buscado algún tipo de solución en R lo más próxima posible
al habitual

select x1, x2, f( y1, y2) as colb1, g(y2 + y3, y4) as colb2, ...
from mi.tabla
group by x1, x2

de SQL que permita:

1) Realizar las llamadas a los parámetros y1,... (columnas de la tabla
original) de una manera simple (sin "decoraciones", etc.).
2) Poder utilizar una función distinta/arbitraria por columna.

Hummmm... ¿alguna idea?

Un saludo,

Carlos J. Gil Bellosta


El día 17 de marzo de 2010 17:49,  <morales en us.es> escribió:
1 day later
#
Carlos, gracias por responder a mi cuestión. Tu procedimiento es bastante "amigable" para aquellos que nos estamos introduciendo en R.  Os agradezco a los tres  vuestras respuestas. En total tenía que hacer 30 tablas. Si no hubiera conocido a R y no me hubiérais ofrecido una solución no se cuanto tiempo habría estado tecleando datos. Siguiendo vuestras sugerencias y luego pasando los resultados a odfWeave (todavía no me atrevo con LATEX) las tablas son muy fáciles de hacer.

Gracias de nuevo.

M. Morales






----- Mensaje original -----
De: "Carlos J. Gil Bellosta " <cgb en datanalytics.com>
Fecha: Miércoles, Marzo 17, 2010 6:50 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