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?

¿Fue útil?

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top