【发布时间】:2020-02-27 21:00:34
【问题描述】:
我有一个包含手动输入的分类值的数据框,并且有几个错误。有人清理了坏数据,我将其加载到 R 中并将其与我的其余数据合并。到目前为止一切都很好。
例如,假设这是我在“Value”列中的原始数据(好数据和坏数据的混合)以及“Value_Clean”列中坏数据的更正。显然这是一个小例子,但我的实际数据框有几十个不同值的更正和几千行。
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”的新列,其中包含 ID 1、2 和 3 的“讨论计划”。
我应该能够用 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
什么鬼?我觉得我在 R 中用 ifelse 做了类似的事情而没有遇到这个问题,那么发生了什么?
谢谢!
【问题讨论】:
-
请将数据类型更改为字符以获得结果 test$Value_Clean = as.character(test$Value_Clean) test$Value = as.character(test$Value) test$Value_Final
标签: r if-statement