Cambiar el nombre de filas y columnas en R
Pregunta
estoy ejecutando el script siguiente:
cause = c(1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2);
time = c(1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 2);
table(cause, time)
Y me sale el siguiente:
time
cause 1 2 3
1 2 2 2
2 2 3 0
Lo que yo quiero es éste:
time
cause 1 2 3
Maltreat 2 2 2
Non-Maltr 2 3 0
Por lo tanto, mi pregunta es: ¿cómo se cambia el nombre de las filas de una tabla en I
?En el mismo sentido, ¿cómo cambiar el nombre de las columnas de esa tabla?
Solución
Una forma de hacerlo es utilizar factores o listas de cadenas en lugar de índices. Por lo tanto:
cause1 <- c("Maltreat", "Non-malt")[cause]
> print(cause1)
[1] "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Non-malt"
[7] "Maltreat" "Non-malt" "Non-malt" "Non-malt" "Non-malt"
> table(cause1, time)
time
cause1 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
Y, en caso de que usted está preocupado acerca de la memoria o la velocidad, R es bastante bueno en lo que representa este tipo de cosas de manera eficiente internamente, con una única instancia de toda la cadena almacenada, y el resto hecho con índices.
Por cierto, serás más feliz en el largo plazo con tramas de datos:
> df <- data.frame(cause=as.factor(c("Maltreat", "Non-malt")[cause]), time=time)
> summary(df)
cause time
Maltreat:6 Min. :1.000
Non-malt:5 1st Qu.:1.000
Median :2.000
Mean :1.818
3rd Qu.:2.000
Max. :3.000
> table(df)
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
Otros consejos
Hay dos formas fáciles de hacer esto:
z <- table(cause, time)
Utilice las funciones COLNAMES / rownames:
> colnames(z)
[1] "1" "2" "3"
> rownames(z)
[1] "1" "2"
o uso dimnames:
> dimnames(z)
$cause
[1] "1" "2"
$time
[1] "1" "2" "3"
> dimnames(z)$cause
[1] "1" "2"
En cualquier caso, elegir sus nombres como vector y asignarlos:
> dimnames(z)$cause <- c("Maltreat","Non-malt")
> z
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
No se olvide maravillosa "revalorizar" y "cambiar el nombre de" comandos de plyr!