Удалить столбцы с нулевым числом вхождений на уровне фактора

У меня есть столбец тип фактора в моих данных, резюме которого выглядит следующим образом

$COL_256
    0     1  <NA>
31557     0     0

Как вы можете видеть, в этом столбце только три уровня, и два из них имеют нулевые вхождения, что означает, что это в основном только один факторный уровень.

Проблема в том, что когда я выполняю определенные операции, такие как регрессия, я получаю сообщение об ошибке:

contrasts can be applied only to factors with 2 or more levels

Как я могу удалить этот столбец, у которого есть все их вхождения только на одном из уровней факторов?

РЕДАКТИРОВАТЬ: я пробовал dropplevels (df), как предложено, но теперь мой столбец выглядит следующим образом и выдает ту же ошибку.

$COL_256
    0
31557

1 ответ

Вы можете проверить, каково состояние переменных, и отбросить их, если они являются константами. Например:

dat <- data.frame(y=1:3,x=factor("a",levels=c("a","b")),x2=letters[c(1,2,1)])
# y = numeric, x=constant with 2 factor levels, x2=not constant with 2 factor levels

dat[sapply(dat,function(x) length(levels({if(is.factor(x)) droplevels(x) else x}))!=1 )]
#  y x2
#1 1  a
#2 2  b
#3 3  a
Другие вопросы по тегам