53 votes

Regroupement de 2 niveaux d'un facteur dans R

J'ai une colonne de données qui est un facteur avec les niveaux A, B et C, je suis intéressé à combiner deux de ces niveaux dans un facteur, donc cela deviendrait A et B, avec B = B et C, ou peut-être une nouvelle variable A et D, avec D = B et C. Je peux trouver beaucoup de façons de le faire en bouclant à travers la colonne avec des instructions if, mais j'ai l'impression qu'il devrait y avoir une approche plus élégante et je me demandais si quelqu'un pouvait m'orienter dans la bonne direction.

91voto

Andrie Points 66979

Utilice levels(x) <- ... pour spécifier de nouveaux niveaux et pour combiner certains niveaux précédents. Par exemple :

f <- factor(LETTERS[c(1:3, 3:1)])
f
[1] A B C C B A
Levels: A B C

Combinez maintenant "A" et "B" en un seul niveau :

levels(f) <- c("A", "A", "C")
f
[1] A A C C A A
Levels: A C

21voto

Joe Points 2572

Si vous utilisez dplyr vous pouvez utiliser les tuyaux forcats l'emballage.

library(forcats)
f %>% fct_collapse(A = c("A","B"))

#[1] A A C C A A
#Levels: A C

4voto

debo Points 174

La bibliothèque Rockchalk est capable de combiner des niveaux. Je pense que c'est génial, si vous voulez combiner B et C dans un facteur, faites-le :

library(rockchalk)
combineLevels(mydf$facVar,levs = c("B", "C"), newLabel = c("BandC") )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X