Changement de nom rangées et de colonnes dans R
Question
Je suis en cours d'exécution le script suivant:
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)
Et j'obtiens ce qui suit:
time
cause 1 2 3
1 2 2 2
2 2 3 0
Ce que je veux est ceci:
time
cause 1 2 3
Maltreat 2 2 2
Non-Maltr 2 3 0
Alors, ma question est: comment voulez-vous renommer les lignes d'une table en R
?Dans la même veine, comment voulez-vous renommer les colonnes de ce tableau?
La solution
Une façon de le faire est d'utiliser des facteurs ou des listes de chaînes au lieu d'index. Donc:
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
Et, au cas où vous êtes inquiet de la mémoire ou de la vitesse, R est assez bonne à représenter ce genre de choses efficacement en interne, avec une seule instance de la chaîne entière stockée, et le reste fait avec des index.
Par ailleurs, vous serez plus heureux à long terme avec des trames de données:
> 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
Autres conseils
Il y a deux façons simples de le faire:
z <- table(cause, time)
Utilisez les fonctions colnames / rownames:
> colnames(z)
[1] "1" "2" "3"
> rownames(z)
[1] "1" "2"
Ou utiliser dimnames:
> dimnames(z)
$cause
[1] "1" "2"
$time
[1] "1" "2" "3"
> dimnames(z)$cause
[1] "1" "2"
Dans tous les cas, choisissez vos noms comme vecteur et leur attribuer:
> dimnames(z)$cause <- c("Maltreat","Non-malt")
> z
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
Ne pas oublier merveilleuse commande « revaloriser » et « renommer » de plyr!