Buen dia: ¿es posible armar una tabla de contingencia pero que contabilice a cada instancia por la variable peso (weight)?¿y que me calcule el porcentaje sobre el total, sobre la fila y sobre la columna? La idea es que en lugar que me cuente las instancias me realice una suma (u alguna otra funcion) de los valores de otra variable. La idea es a partir de la tabla: sexo peso (weight) edad F 1.2 33 F 1.3 32 M 1.4 32 M 1.5 32 Obtener la tabla: 32 33 TOTAL M 2.9 0 2.9 F 1.3 1.2 2.5 TOTAL 2.8 2.6 5.4 De antemano muchas gracias!!! [[alternative HTML version deleted]]
¿Has probado la función table() ? Si tu data.frame se llama "tabla", prueba table(tabla$sexo,tabla$peso) Un saludo. Olivier -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 02/09/2010, a las 15:21, cesar procopio escribió:> Buen dia: > > ¿es posible armar una tabla de contingencia pero que contabilice a > cada > instancia por la variable peso (weight)?¿y que me calcule el > porcentaje sobre el > total, sobre la fila y sobre la columna? > La idea es que en lugar que me cuente las instancias me realice una > suma (u > alguna otra funcion) de los valores de otra variable. > La idea es a partir de la tabla: > sexo peso (weight) edad > F 1.2 33 > F 1.3 32 > M 1.4 32 > M 1.5 32 > > Obtener la tabla: > 32 33 TOTAL > M 2.9 0 2.9 > F 1.3 1.2 2.5 > TOTAL 2.8 2.6 5.4 > > De antemano muchas gracias!!! > > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Buenos dias Cesar, Quizas no ando muy bien haciendo aritmetica por estos dias, pero no logro obtener los mismos resultados para la ultima fila con los datos que envias: # datos datos <- read.table(textConnection("sexo peso edad F 1.2 33 F 1.3 32 M 1.4 32 M 1.5 32"), header = TRUE) closeAllConnections() # sumas interiores out <- with(datos, tapply(peso, list(sexo, edad), sum)) out[is.na(out)] <- 0 # totales columna <- with(datos, tapply(peso, sexo, sum)) fila <- with(datos, tapply(peso, edad, sum)) # salida res <- rbind(cbind(out, columna), c(fila, sum(fila))) colnames(res) <- c(''32'',''33'',''TOTAL'') rownames(res) <- c(''M'',''F'',''TOTAL'') res Saludos, Jorge Ivan Velez 2010/9/2 cesar procopio <>> Buen dia: > > ¿es posible armar una tabla de contingencia pero que contabilice a cada > instancia por la variable peso (weight)?¿y que me calcule el porcentaje > sobre el > total, sobre la fila y sobre la columna? > La idea es que en lugar que me cuente las instancias me realice una suma (u > alguna otra funcion) de los valores de otra variable. > La idea es a partir de la tabla: > sexo peso (weight) edad > F 1.2 33 > F 1.3 32 > M 1.4 32 > M 1.5 32 > > Obtener la tabla: > 32 33 TOTAL > M 2.9 0 2.9 > F 1.3 1.2 2.5 > TOTAL 2.8 2.6 5.4 > > De antemano muchas gracias!!! > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
También, ?margin.table
Mejor aun: out <- with(datos, tapply(peso, list(sexo, edad), sum))out[is.na(out)] <- 0 addmargins(out) --JIV On Thu, Sep 2, 2010 at 10:30 AM, Carlos J. Gil Bellosta <> wrote:> También, > > ?margin.table >[[alternative HTML version deleted]]
Jorge, ... pero, el objeto final ("out") no es una tabla de contingencia para R. Si el objetivo es contrastar la independencia entre los dos factores cruzados de la tabla, no hace falta calcular los márgenes (filas y columnas de TOTALES) y el uso de la función table() con summary() es idóneo. Un saludo. Olivier -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 02/09/2010, a las 16:34, Jorge Ivan Velez escribió:> Mejor aun: > > out <- with(datos, tapply(peso, list(sexo, edad), sum))out[is.na > (out)] <- 0 > addmargins(out) > > --JIV > > > On Thu, Sep 2, 2010 at 10:30 AM, Carlos J. Gil Bellosta <> wrote: > >> También, >> >> ?margin.table >> > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Buenos dias Olivier, Estoy de acuerdo con tu comentario: en realidad no es necesario agregar los totales si la idea es hacer una prueba de independencia entre los factores. Ahora, si la edad no fuera un factor sino una variable continua (no es claro en la descripcion que Cesar dio), no veo tan claro el probar independencia via "esta" tabla de contingencia. La discusion queda abierta. De todas maneras, creo que hicimos lo que Cesar solicito, aunque es importante, tambien, "ir mas alla". En cuanto a si "out" es una tabla de contingencia, la respuesta es no: class(out) [1] "matrix" y cada entrada corresponde a la suma de los pesos en cada combinacion sexo/edad (edad siendo un factor). Saludos, Jorge Ivan Velez 2010/9/2 Olivier Nuñez <onunez@iberstat.es>> Jorge, > > ... pero, el objeto final ("out") no es una tabla de contingencia para R. > Si el objetivo es contrastar la independencia entre los dos factores > cruzados de la tabla, > no hace falta calcular los márgenes (filas y columnas de TOTALES) y el > uso de la función table() con summary() es idóneo. > > Un saludo. Olivier > -- ____________________________________ > > Olivier G. Nuñez > Email: onunez@iberstat.es > Tel : +34 663 03 69 09 > Web: http://www.iberstat.es > > ____________________________________ > > > > > El 02/09/2010, a las 16:34, Jorge Ivan Velez escribió: > > Mejor aun: >> >> out <- with(datos, tapply(peso, list(sexo, edad), sum))out[is.na(out)] <- >> 0 >> addmargins(out) >> >> --JIV >> >> >> On Thu, Sep 2, 2010 at 10:30 AM, Carlos J. Gil Bellosta <> wrote: >> >> También, >>> >>> ?margin.table >>> >>> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Jorge, gracias por tu respuesta, cómo siempre rigurosa. Pero en realidad, lo que pretendía con este comentario, no es tanto "ir más allá" sino "ir al grano". La vocación de una tabla de contingencia es básicamente hacer un test, y en general, este test es de independencia (PD: hacer un test de independencia de la qui2 con variables continuas es bastante común, aunque no es de lo más eficiente). R es un lenguaje para hacer estadística y por lo tanto es importante que en la medida de lo posible, los objetos que manejemos en este lenguaje tengan un sentido estadístico. Es cierto que también como en cualquier lenguaje, hay aspectos gramaticales que pueden ser resueltos de manera más o menos elegantes. Pero lo que quisiera sugerir es que no perdamos de vista la estadística en este foro y que insistamos en ello para dar oportunidad a discusiones más fructíferas. Un saludo. Olivier -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 03/09/2010, a las 17:45, Jorge Ivan Velez escribió:> Buenos dias Olivier, > > Estoy de acuerdo con tu comentario: en realidad no es necesario > agregar los totales si la idea es hacer una prueba de independencia > entre los factores. Ahora, si la edad no fuera un factor sino una > variable continua (no es claro en la descripcion que Cesar dio), no > veo tan claro el probar independencia via "esta" tabla de > contingencia. La discusion queda abierta. De todas maneras, creo > que hicimos lo que Cesar solicito, aunque es importante, tambien, > "ir mas alla". > > En cuanto a si "out" es una tabla de contingencia, la respuesta es no: > > class(out) > [1] "matrix" > > y cada entrada corresponde a la suma de los pesos en cada > combinacion sexo/edad (edad siendo un factor). > > > Saludos, > Jorge Ivan Velez > > > 2010/9/2 Olivier Nuñez <onunez en iberstat.es> > Jorge, > > ... pero, el objeto final ("out") no es una tabla de contingencia > para R. > Si el objetivo es contrastar la independencia entre los dos > factores cruzados de la tabla, > no hace falta calcular los márgenes (filas y columnas de TOTALES) > y el uso de la función table() con summary() es idóneo. > > Un saludo. Olivier > -- ____________________________________ > > Olivier G. Nuñez > Email: onunez en iberstat.es > Tel : +34 663 03 69 09 > Web: http://www.iberstat.es > > ____________________________________ > > > > > El 02/09/2010, a las 16:34, Jorge Ivan Velez escribió: > > Mejor aun: > > out <- with(datos, tapply(peso, list(sexo, edad), sum))out[is.na > (out)] <- 0 > addmargins(out) > > --JIV > > > On Thu, Sep 2, 2010 at 10:30 AM, Carlos J. Gil Bellosta <> wrote: > > También, > > ?margin.table > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >