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ó:
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
Buenos dias Manuel,
Podrias utilizar lo siguiente:
# funcion percentiles
percen <- function(x) quantile(x, probs = c(.05,.10,.20,.5,.6,.8,.95))
as.data.frame(with(example, tapply(recall, list(EDUCATION, Age), percen)))
# Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 45
             85
# High 23.0, 23.0, 23.0, 23.0, 24.6, 27.0, 27.0 23.3, 24.6, 27.2, 35.0,
36.2, 38.6, 40.4
# LOW Â 13.8, 15.6, 19.2, 21.0, 27.4, 37.0, 37.0 18.0, 18.0, 18.0, 19.5,
20.4, 21.8, 22.7
Saludos,
   Jorge Ivan Velez
2010/3/17 <>
Hola, perdón por el error en el fichero que os dejé. Ya lo he
os lo adjunto de nuevo con el valor  "LOW" corregido.  Sigo teniendo
problema de obtener varias cuantilas para cada variable
puedo conseguir una cuantila de la siguiente forma:
+ quantile(x,probs = c(.10))
+ }
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
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
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
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"
percentiles) a un marco de datos estratificado por algunas variables
categóricas (ver fichero adjunto como ejemplo). La idea es obtener
percentiles de varias variables (primeras columnas del
pero dividiendo el marco de datos en función de los valores
categóricas (educación y edad, las dos últimas columnas del fichero
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),
aggregate(example$recall, list(example$EDUCATION,example$Age),
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
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),
Error en aggregate.data.frame(as.data.frame(x), ...) :
 'FUN' must always return a scalar
Alguna sugerencia? Gracias anticipadas
Manuel