2016-02-12 2 views
1

Я хочу преобразовать все NA в один столбец (и только один столбец) моего кадра данных в "non-PA" вместо этого. Класс столбца является фактором.Преобразование NA в коэффициент в r

В прошлом я успешно использовал:

df$column[is.na(df$column)] <- "non-PA" 

Но по какой-то причине на этот раз я получаю сообщение об ошибке:

In `[<-.factor`(`*tmp*`, is.na(management.points$management), 
value = c(NA, : invalid factor level, NA generated 

Я попытался преобразования столбец символов и различных другие пути вокруг него, но я все равно получаю то же сообщение об ошибке. Что я делаю не так?

+1

Не могли бы вы поделиться часть кода, генерирующий эту конкретную ошибку – Bharath

+0

Ну его код в моем вопросе (ДФ $ column [is.na (df $ column)] <- "non-PA"), но, очевидно, он настроен для моего кода, поэтому мой фреймворк называется «огонь», а столбец «управление» – James

ответ

6

Вы должны включить столбец в вектор символов первого:

df$column <- as.character(df$column) 
df$column[is.na(df$column)] <- "non-PA" 
df$column <- factor(df$column) 

ошибка происходит потому, что вы не можете ввести значение в фактор, если это уже не уровень этого фактора.

Одним из потенциальных недостатков (из комментария @ docendo) является то, что это может удалить неиспользуемые уровни факторов. Чтобы сохранить их, вы можете просто добавить «non_PA» до уровней вместо преобразования в символ:

levels(df$column) <- union(levels(df$column), "non_PA") 
df$column[is.na(df$column)] <- "non-PA" 
+0

Как я уже сказал в своем вопросе, конвертация столбец для символа был первым, что я пробовал, но я все равно получаю такое же сообщение об ошибке. Однако гибридное решение с @docendo работает. Спасибо, парни! Я отметил это как ответ. – James

Смежные вопросы