Regroupement de 2 niveaux d'un facteur dans R [dupliquer]

Cette question a déjà une réponse ici:

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 en un seul facteur, de sorte qu'il 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 la colonne avec des instructions if, mais je pense qu'il devrait y avoir une approche plus élégante et je me demandais si quelqu'un pouvait me diriger dans la bonne direction.

40
r
demandé sur Heretic Monkey 2012-03-07 19:11:20

3 réponses

Utiliser levels(x) <- ... pour spécifier de nouveaux niveaux, et de 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
76
répondu Andrie 2012-03-07 15:31:43

Si vous utilisez dplyr tuyaux vous pouvez utiliser le forcats package.

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

#[1] A A C C A A
#Levels: A C
11
répondu Joe 2016-10-16 21:35:25

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

library(rockchalk)
combineLevels(mydf$facVar,levs = c("B", "C"), newLabel = c("BandC") )
2
répondu debo 2017-01-23 01:38:27