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