我有一列数据是A,B和C级别的因素,我有兴趣将这些级别中的两个组合成一个因子,所以它会变成A和B,B = B和C,或者也许是一个新的变量A和D,D = B和C.我可以通过使用if语句循环遍历列来提出很多方法,但我觉得应该有一个更优雅的方法,我想知道如果有人能指出我正确的方向。
答案 0 :(得分:84)
使用levels(x) <- ...
指定新级别,并结合以前的某些级别。例如:
f <- factor(LETTERS[c(1:3, 3:1)])
f
[1] A B C C B A
Levels: A B C
现在将“A”和“B”组合成一个单独的级别:
levels(f) <- c("A", "A", "C")
f
[1] A A C C A A
Levels: A C
答案 1 :(得分:13)
如果您使用dplyr
管道,则可以使用forcats
包。
library(forcats)
f %>% fct_collapse(A = c("A","B"))
#[1] A A C C A A
#Levels: A C
答案 2 :(得分:4)
rockchalk库可以组合关卡。我认为它很棒,如果你想将B和C结合在一起,可以做到这一点:
library(rockchalk)
combineLevels(mydf$facVar,levs = c("B", "C"), newLabel = c("BandC") )