Estoy ejecutando la siguiente secuencia de comandos:

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 lo siguiente:

    time
cause 1 2 3
    1 2 2 2
    2 2 3 0

Lo que yo quiero es este:

      time
cause     1 2 3
Maltreat  2 2 2
Non-Maltr 2 3 0

Así, mi pregunta es: ¿cómo se puede cambiar el nombre de las filas de una tabla en R?

En el mismo sentido, ¿cómo cambiar el nombre de las columnas de esa tabla?

OriginalEl autor user5243421 | 2009-09-28

3 Comentarios

  1. 4

    Una manera de hacerlo es utilizar factores o listas de cadenas en lugar de índices. Así:

    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 la representación de este tipo de cosas de manera eficiente internamente, con una única instancia de toda la cadena almacenada, y el resto se hace con los índices.

    Por cierto, vas a ser más feliz en el largo plazo con marcos 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

    OriginalEl autor Harlan

  2. 5

    Hay dos maneras fáciles de hacer esto:

    z <- table(cause, time)

    Utilizar el colnames/rownames funciones:

    > 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 asignarlas:

    > dimnames(z)$cause <- c("Maltreat","Non-malt")
    > z
              time
    cause      1 2 3
      Maltreat 2 2 2
      Non-malt 2 3 0

    OriginalEl autor Shane

  3. 1

    No olvides plyr maravilloso «revalorizar» y «cambiar el nombre de» comando!

    OriginalEl autor d_a_c321

Dejar respuesta

Please enter your comment!
Please enter your name here