У меня есть фрейм данных с категориальными значениями, которые были введены вручную, и есть несколько ошибок. Кто-то очистил плохие данные, и я загрузил их в R и объединил их с остальными данными. Пока все хорошо.
В качестве примера, скажем, это данные, которые у меня есть с исходными данными (смесь хороших и плохих данных) в столбце «Значение» и исправлениями плохих данных в столбце «Значение_чисти». Очевидно, это небольшой пример, но мой фактический фрейм данных содержит десятки поправок разных значений и несколько тысяч строк.
test <- data.frame(ID = c(1, 2, 3)
, Value = c("Discuss plan", "Discuss plan", "Discuss paln")
, Value_Clean = c(NA, NA, "Discuss plan"))
Я хотел бы создать новый столбец с именем «Value_Final», в котором есть «Обсудить план» для идентификаторов 1, 2 и 3.
Мне кажется, довольно просто в состоянии выполнить sh это с помощью ifelse:
test$Value_Final <- ifelse(is.na(test$Value_Clean), test$Value, test$Value_Clean)
Однако, когда я делаю это, я получаю следующее:
> test
ID Value Value_Clean Value_Final
1 1 Discuss plan <NA> 2
2 2 Discuss plan <NA> 2
3 3 Discuss paln Discuss plan 1
Какого черта? Я чувствую, что я делал подобные вещи с ifelse в R, не сталкиваясь с этой проблемой, так что же происходит?
Спасибо!