Estimados usuarios de R: Estoy aprendiendo a usar el comando aggregate. Por ejemplo tengo la siguiente tabla: A B C X1 X2 X3 X4 1 1 1 10 0,333333333 25 1 2 1 1 20 1,818181818 36 1 3 2 1 30 1,428571429 46 1 4 2 1 11 0,35483871 26 2 5 3 2 21 1,75 37 2 6 3 2 31 1,409090909 47 2 7 4 2 12 0,375 27 3 8 4 2 22 1,692307692 38 3 9 5 3 32 3,2 50 3 10 5 3 13 0,65 28 3 Yo quiero agrupar usando como variables clave A, B y C pero para X1 y X2 quiero obtener la media y para X3 y X4 la mediana. ¿Como tendría que usar el comando aggregate? Desde ya muchas gracias, Sebastián. [[alternative HTML version deleted]]
Hola, Prueba a mirar por aquí: http://www.r-statistics.com/tag/aggregate/ ¿Porqué no pruebas a hacerlo con sqldf?... Saludos, Carlos Ortega www.qualityexcellence.es El 16 de septiembre de 2013 22:44, Sebastian Kruk <residuo.solow@gmail.com>escribió:> Estimados usuarios de R: > > Estoy aprendiendo a usar el comando aggregate. > > Por ejemplo tengo la siguiente tabla: > > A B C X1 X2 X3 X4 > 1 1 1 10 0,333333333 25 1 > 2 1 1 20 1,818181818 36 1 > 3 2 1 30 1,428571429 46 1 > 4 2 1 11 0,35483871 26 2 > 5 3 2 21 1,75 37 2 > 6 3 2 31 1,409090909 47 2 > 7 4 2 12 0,375 27 3 > 8 4 2 22 1,692307692 38 3 > 9 5 3 32 3,2 50 3 > 10 5 3 13 0,65 28 3 > Yo quiero agrupar usando como variables clave A, B y C pero para X1 y X2 > quiero obtener la media y para X3 y X4 la mediana. > > ¿Como tendría que usar el comando aggregate? > > Desde ya muchas gracias, > > Sebastián. > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Hola Sebastián, Qué tal así:? t<-data.frame(A=c(1,2,3,4,5,6,7,8,9,10),B=c(1,1,2,2,3,3,4,4,5,5),C=c(1,1,1,1 ,2,2,2,2,3,3),X1=c(10,20,30,11,21,31,12,22,32,13),X2=c(0.33,1.81,1.42,0.35,1 .75,1.4,0.375,1.69,3.2,0.65),X3=c(25,36,46,26,37,47,27,38,50,28),X4=c(1,1,1, 2,2,2,3,3,3,3)) aggregate(cbind(X1,X2)~B+C,t,mean) B C X1 X2 1 1 1 15.0 1.0700 2 2 1 20.5 0.8850 3 3 2 26.0 1.5750 4 4 2 17.0 1.0325 5 5 3 22.5 1.9250 aggregate(cbind(X3,X4)~B+C,t,median) B C X3 X4 1 1 1 30.5 1.0 2 2 1 36.0 1.5 3 3 2 42.0 2.0 4 4 2 32.5 3.0 5 5 3 39.0 3.0 Saludos, Juan Carmona. -----Mensaje original----- De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de Sebastian Kruk Enviado el: lunes, 16 de septiembre de 2013 22:44 Para: Lista R Asunto: [R-es] ayuda con aggregate Estimados usuarios de R: Estoy aprendiendo a usar el comando aggregate. Por ejemplo tengo la siguiente tabla: A B C X1 X2 X3 X4 1 1 1 10 0,333333333 25 1 2 1 1 20 1,818181818 36 1 3 2 1 30 1,428571429 46 1 4 2 1 11 0,35483871 26 2 5 3 2 21 1,75 37 2 6 3 2 31 1,409090909 47 2 7 4 2 12 0,375 27 3 8 4 2 22 1,692307692 38 3 9 5 3 32 3,2 50 3 10 5 3 13 0,65 28 3 Yo quiero agrupar usando como variables clave A, B y C pero para X1 y X2 quiero obtener la media y para X3 y X4 la mediana. ¿Como tendría que usar el comando aggregate? Desde ya muchas gracias, Sebastián. [[alternative HTML version deleted]]
Hola, ¿qué tal? Creo que la forma más limpia es usar la función ddply de plyr aproximadamente así: ddply(mis.datos, .(B, C), summarise, mean.X2 = mean(X2), medianX4 = median(X4), etc. ) La sección "Using ddply" de http://www.cookbook-r.com/Manipulating_data/Summarizing_data/ lo expica bastante bien. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com