2012-03-07 20 views
39

Ho una colonna di dati che è un fattore con i livelli A, B e C, sono interessato a combinare due di questi livelli in un fattore, quindi diventerebbe A e B, con B = B e C, o forse una nuova variabile A e D, con D = B e C. Posso trovare un sacco di modi per farlo collegando la colonna con le istruzioni if, ma sento che dovrebbe esserci un approccio più elegante e mi chiedevo se qualcuno potesse indicarmi la giusta direzione.Raggruppamento di 2 livelli di un fattore in R

+3

più recente, migliore risposta: http://stackoverflow.com/questions/19410108/cleaning-up-factor- livelli-collasso-etichette a più livelli –

risposta

70

Utilizzare levels(x) <- ... per specificare nuovi livelli e per combinare alcuni livelli precedenti. Per esempio:

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

ora combinare "A" e "B" in un solo livello:

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

Semplice come avrei potuto sperare, grazie! – asjohnson

+0

Questo è utile, grazie a entrambi. – Rhubarb

+0

C'è un modo per farlo in dplyr? – Hatshepsut

9

Se stai usando dplyr tubi è possibile utilizzare il pacchetto forcats.

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

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

La libreria di rockchalk è in grado di combinare i livelli. Credo che la sua grande, se si desidera combinare B e C insieme in un fattore di fare questo:

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