У меня есть столбец данных, который является фактором с уровнями A, B и C. Меня интересует объединение двух из этих уровней в один фактор, поэтому он станет A и B, с B = B и C, или возможно, новую переменную A и D, с D = B и C. Я могу придумать много способов сделать это, перейдя через столбец с операторами if, но я чувствую, что должен быть более элегантный подход, и мне было интересно если кто-то может указать мне в правильном направлении.
Группировка 2 уровней фактора R
Ответ 1
Используйте 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
Ответ 2
Если вы используете трубы dplyr
, вы можете использовать пакет forcats
.
library(forcats)
f %>% fct_collapse(A = c("A","B"))
#[1] A A C C A A
#Levels: A C
Ответ 3
Библиотека rockchalk может объединять уровни. Я думаю, что это здорово, если вы хотите объединить B и C вместе в одном из факторов:
library(rockchalk)
combineLevels(mydf$facVar,levs = c("B", "C"), newLabel = c("BandC") )