Удалить столбцы с нулевым числом вхождений на уровне фактора
У меня есть столбец тип фактора в моих данных, резюме которого выглядит следующим образом
$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