2009-09-28 11 views
6

estoy ejecutando el script siguiente:Cambiar el nombre de filas y columnas en I

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 

Entonces, mi pregunta es: ¿cómo cambias el nombre de las filas de una tabla en R?

En la misma línea, ¿cómo cambiaría el nombre de las columnas de esa tabla?

Respuesta

4

Una forma de hacerlo es usar 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 hace 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 
5

Hay dos maneras fáciles de hacerlo:

z <- table(cause, time) 

Use 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 un 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 
1

No se olvide maravillosa "revalorizar" y "cambiar el nombre de" comandos de plyr!

Cuestiones relacionadas