2009-09-28 7 views
6

ich das folgende Skript renne:Umbenennen von Zeilen und Spalten in R

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) 

Und ich folgendes:

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

Was ich will, ist dies:

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

Meine Frage ist also: Wie benennt man die Zeilen einer Tabelle in R um?

In der gleichen Weise, wie würden Sie die Spalten dieser Tabelle umbenennen?

Antwort

4

Eine Möglichkeit, dies zu tun, ist die Verwendung von Faktoren oder Listen von Strings anstelle von Indizes. Also:

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 

Und, falls Sie sich Sorgen machen über das Gedächtnis oder die Geschwindigkeit, R ist ziemlich gut repräsentiert diese Art der Sache effizient intern, mit nur einer einzigen Instanz des gesamten String gespeichert, und der Rest erledigt mit Indizes.

Übrigens werden Sie glücklicher auf lange Sicht mit Datenrahmen sein:

> 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

Es gibt zwei einfache Möglichkeiten, dies zu tun:

z <- table(cause, time) 

Verwenden Sie die COLNAMES/rownames Funktionen:

> colnames(z) 
[1] "1" "2" "3" 
> rownames(z) 
[1] "1" "2" 

oder benutzen dimnames:

> dimnames(z) 
$cause 
[1] "1" "2" 
$time 
[1] "1" "2" "3" 
> dimnames(z)$cause 
[1] "1" "2" 

Auf jeden Fall wählen Sie Ihre Namen als Vektor und ordnen sie:

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

Sie plyr ist wunderbar „aufzuwerten“ und „Umbenennen“ Befehl nicht vergessen!