在R中对因子中的2个级别进行分组

时间:2012-03-07 15:11:20

标签: r

我有一列数据是A,B和C级别的因素,我有兴趣将这些级别中的两个组合成一个因子,所以它会变成A和B,B = B和C,或者也许是一个新的变量A和D,D = B和C.我可以通过使用if语句循环遍历列来提出很多方法,但我觉得应该有一个更优雅的方法,我想知道如果有人能指出我正确的方向。

3 个答案:

答案 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") )