Discussion:
[R-es] aplicar función de cuantilas a un dataframe
(too old to reply)
morales en us.es (morales en us.es)
2010-03-16 21:21:04 UTC
Permalink
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








------------ 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>
jorgeivanvelez en gmail.com (Jorge Ivan Velez)
2010-03-16 22:28:01 UTC
Permalink
An embedded and charset-unspecified text was scrubbed...
Name: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20100316/37c335f7/attachment.pl>
morales en us.es (morales en us.es)
2010-03-17 07:50:06 UTC
Permalink
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
# lo que quieres calcular
with(example, aggregate(recall, list(EDUCATION, Age), quantile))
# 'FUN' must always return a scalar
De la siguiente manera puedes calcular el numero de observaciones por
# 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 <>
Post by morales en us.es (morales en us.es)
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
Post by morales en us.es (morales en us.es)
datos).
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)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age), quantile)
'FUN' must always return a scalar
Tambien he intentado crear una función para aplicarla, pero este ha
sido el
Post by morales en us.es (morales en us.es)
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)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age), percen)
'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>
javimunozlara en gmail.com (Javier Muñoz)
2010-03-17 08:43:30 UTC
Permalink
An embedded and charset-unspecified text was scrubbed...
Name: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20100317/5160a841/attachment.pl>
morales en us.es (morales en us.es)
2010-03-17 10:09:50 UTC
Permalink
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
Hola Manuel.
Puedes usar la función 'by' en lugar de 'aggregate'. Si necesitas que
el
output sea un data.frame siempre puedes transformar el objeto de clase
'by'.
m.aggregate <-
function(data, INDICES, FUN, ...){
mby <- by(data, INDICES, FUN, ...) #unas lista de dimensiones 'ni' x
'nj'
x ... x 'k'
if(all(sapply(mby, length) < 2))
stop("Use 'aggregate' for scalar FUN\n")
x <- expand.grid(dimnames(mby), KEEP.OUT.ATTRS = FALSE)
x <- x[!sapply(mby, is.null), ]
y <- do.call("rbind", mby)
x <- cbind(x, y)
as.data.frame(x)
}
Los argumentos son los mismos que los de 'by'.
En general, para este tipo de tareas también conviente tener presente
el
paquete 'plyr'.
Un saludo.
Javier.
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
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
# lo que quieres calcular
with(example, aggregate(recall, list(EDUCATION, Age), quantile))
# 'FUN' must always return a scalar
De la siguiente manera puedes calcular el numero de observaciones
por
# 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 <>
Post by morales en us.es (morales en us.es)
Hola R-adictos,
me gustaría que alguien me ayudara a aplicar la función "quantile"
(varios
Post by morales en us.es (morales en us.es)
percentiles) a un marco de datos estratificado por algunas variables
categóricas (ver fichero adjunto como ejemplo). La idea es obtener
varios
Post by morales en us.es (morales en us.es)
percentiles de varias variables (primeras columnas del fichero de
datos),
Post by morales en us.es (morales en us.es)
pero dividiendo el marco de datos en función de los valores de las
variables
Post by morales en us.es (morales en us.es)
categóricas (educación y edad, las dos últimas columnas del fichero
de
Post by morales en us.es (morales en us.es)
datos).
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)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
quantile)
Post by morales en us.es (morales en us.es)
'FUN' must always return a scalar
Tambien he intentado crear una función para aplicarla, pero este
ha
sido el
Post by morales en us.es (morales en us.es)
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)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
percen)
Post by morales en us.es (morales en us.es)
'FUN' must always return a scalar
Alguna sugerencia? Gracias anticipadas
Manuel
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
jorgeivanvelez en gmail.com (Jorge Ivan Velez)
2010-03-17 14:52:52 UTC
Permalink
An embedded and charset-unspecified text was scrubbed...
Name: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20100317/cec567b4/attachment.pl>
morales en us.es (morales en us.es)
2010-03-17 16:49:38 UTC
Permalink
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,
# 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
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
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
# lo que quieres calcular
with(example, aggregate(recall, list(EDUCATION, Age), quantile))
# 'FUN' must always return a scalar
De la siguiente manera puedes calcular el numero de observaciones
por
# 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 <>
Post by morales en us.es (morales en us.es)
Hola R-adictos,
me gustaría que alguien me ayudara a aplicar la función "quantile"
(varios
Post by morales en us.es (morales en us.es)
percentiles) a un marco de datos estratificado por algunas variables
categóricas (ver fichero adjunto como ejemplo). La idea es obtener
varios
Post by morales en us.es (morales en us.es)
percentiles de varias variables (primeras columnas del fichero de
datos),
Post by morales en us.es (morales en us.es)
pero dividiendo el marco de datos en función de los valores de las
variables
Post by morales en us.es (morales en us.es)
categóricas (educación y edad, las dos últimas columnas del fichero
de
Post by morales en us.es (morales en us.es)
datos).
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)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
quantile)
Post by morales en us.es (morales en us.es)
'FUN' must always return a scalar
Tambien he intentado crear una función para aplicarla, pero este
ha
sido el
Post by morales en us.es (morales en us.es)
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)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
percen)
Post by morales en us.es (morales en us.es)
'FUN' must always return a scalar
Alguna sugerencia? Gracias anticipadas
Manuel
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
cgb en datanalytics.com (Carlos J. Gil Bellosta )
2010-03-17 17:50:18 UTC
Permalink
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
Post by morales en us.es (morales en us.es)
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,
# 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
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
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
# lo que quieres calcular
with(example, aggregate(recall, list(EDUCATION, Age), quantile))
#  'FUN' must always return a scalar
De la siguiente manera puedes calcular el numero de observaciones
por
# 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 <>
Post by morales en us.es (morales en us.es)
Hola R-adictos,
me gustaría que alguien me ayudara a aplicar la función "quantile"
(varios
Post by morales en us.es (morales en us.es)
percentiles) a un marco de datos estratificado por algunas variables
categóricas (ver fichero adjunto como ejemplo). La idea es obtener
varios
Post by morales en us.es (morales en us.es)
percentiles de varias variables (primeras columnas del fichero de
datos),
Post by morales en us.es (morales en us.es)
pero dividiendo el marco de datos en función de los valores de las
variables
Post by morales en us.es (morales en us.es)
categóricas (educación y edad, las dos últimas columnas del fichero
de
Post by morales en us.es (morales en us.es)
datos).
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)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
quantile)
Post by morales en us.es (morales en us.es)
 'FUN' must always return a scalar
Tambien he intentado crear una función para aplicarla, pero este
ha
sido el
Post by morales en us.es (morales en us.es)
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)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
percen)
Post by morales en us.es (morales en us.es)
 'FUN' must always return a scalar
Alguna sugerencia? Gracias anticipadas
Manuel
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
morales en us.es (morales en us.es)
2010-03-19 06:39:20 UTC
Permalink
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
Post by cgb en datanalytics.com (Carlos J. Gil Bellosta )
Hola, ¿qué tal?
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
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
Post by morales en us.es (morales en us.es)
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,
# 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
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
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
# lo que quieres calcular
with(example, aggregate(recall, list(EDUCATION, Age), quantile))
#  'FUN' must always return a scalar
De la siguiente manera puedes calcular el numero de observaciones
por
# 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.
Post by morales en us.es (morales en us.es)
Espero sea de utilidad,
                             Jorge Ivan Velez
2010/3/16 <>
Post by morales en us.es (morales en us.es)
Hola R-adictos,
me gustaría que alguien me ayudara a aplicar la función "quantile"
(varios
Post by morales en us.es (morales en us.es)
percentiles) a un marco de datos estratificado por algunas variables
categóricas (ver fichero adjunto como ejemplo). La idea es obtener
varios
Post by morales en us.es (morales en us.es)
percentiles de varias variables (primeras columnas del
fichero de
Post by morales en us.es (morales en us.es)
datos),
Post by morales en us.es (morales en us.es)
pero dividiendo el marco de datos en función de los valores
de las
Post by morales en us.es (morales en us.es)
variables
Post by morales en us.es (morales en us.es)
categóricas (educación y edad, las dos últimas columnas del fichero
de
Post by morales en us.es (morales en us.es)
datos).
example= read.table("example.txt",header=T)
aggregate(example$recall,
list(example$EDUCATION,example$Age), mean)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
quantile)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
quantile)
Post by morales en us.es (morales en us.es)
 'FUN' must always return a scalar
Tambien he intentado crear una función para aplicarla, pero este
ha
sido el
Post by morales en us.es (morales en us.es)
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)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
Post by morales en us.es (morales en us.es)
aggregate(example$recall, list(example$EDUCATION,example$Age),
percen)
Post by morales en us.es (morales en us.es)
 'FUN' must always return a scalar
Alguna sugerencia? Gracias anticipadas
Manuel
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
Loading...