将R中的2个因子分组

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

使用levels(x) <- ...指定新的级别,并合并一些先前的级别。 例如:

 f <- factor(LETTERS[c(1:3, 3:1)]) f [1] ABCCBA Levels: ABC 

现在将“A”和“B”组合成一个单一的层次:

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

如果你使用dplyrpipe道,你可以使用forcats软件包。

 library(forcats) f %>% fct_collapse(A = c("A","B")) #[1] AACCAA #Levels: AC 

rockchalk图书馆能够结合水平。 我认为它很棒,如果你想在一个因素中结合B和C,可以这样做:

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