Problema
Deseamos crear una tabla de contingencia para uno o varios factores.
Solución
- Una dimensión
table(mtcars$am)
0 1
19 13
table(mtcars$am, mtcars$gear)
Como hemos especificado dos vectores, no aparece el nombre de las dimensiones: am y gear.
3 4 5
0 15 4 0
1 0 8 5
table(mtcars[, c("am", "gear")])
tabla <- table(mtcars[, 9:10])
# O usando el argumento dnn:
table(mtcars$am, mtcars$gear, dnn = c("am", "gear"))
gear
am 3 4 5
0 15 4 0
1 0 8 5
table(mtcars[, c("am", "gear", "cyl")])
, , cyl = 4
gear
am 3 4 5
0 1 2 0
1 0 6 2
, , cyl = 6
gear
am 3 4 5
0 2 2 0
1 0 2 1
, , cyl = 8
gear
am 3 4 5
0 12 0 0
1 0 0 2
En el caso anterior sería más claro crear una tabla de contingencia plana (Flat Contingency Table).
ftable(mtcars[, c("am", "gear", "cyl")])
cyl 4 6 8
am gear
0 3 1 2 12
4 2 2 0
5 0 0 0
1 3 0 0 0
4 6 2 0
5 2 1 2
Podemos usar los argumentos row.vars y col.vars para especificar las filas y columnas que deseamos en la tabla de contingencia. Si ninguno es especificado, la última variable es usada para las columnas. Como en nuestro caso cyl.
ftable(mtcars[, c("am", "gear", "cyl")], col.vars = c(1, 2))
am 0 1
gear 3 4 5 3 4 5
cyl
4 1 2 0 0 6 2
6 2 2 0 0 2 1
8 12 0 0 0 0 2
Alternativa
La función xtabs crea tablas de contingencia mediante el formato de fórmula, con cada variable separada por un +.
# Una dimensión
xtabs(~ am, mtcars)
# Dos dimensiones
xtabs(~ am + gear, mtcars)
# Tres dimensiones
xtabs(~ am + gear + cyl, mtcars)
# Tabla de contingencia plana
ftable(xtabs(~ am + gear + cyl, mtcars))
Referencias
Gracias, de mucha ayuda
ResponderEliminarMe alegro. Saludos
EliminarGracias!
ResponderEliminarA ti por el comentario. Saludos.
Eliminar