Ifelse NULL:获取数字而不是字符串值

时间:2019-04-02 15:12:11

标签: r if-statement na mutate

这似乎很容易做到,但我找不到答案。我的数据框中有两个关于区域名称的变量。我想使用这两个变量创建一个最终的Area变量。如果缺少Area2,则仅使用Area1值,但是如果不缺少Area2,则使用Area2值。

Area    Area2  Goal
ABC            ABC
ABC            ABC
AAA     AAA    AAA
AA-A    AAA    AAA
A AA    AAA    AAA

data <- data.frame(Area1 = c("ABC", "ABC", "AAA", "AA-A", "A AA"),
                   Area2 =c("", "", "AAA", "AAA", "AAA"))

下面是我尝试过的方法,但是我正在获取最终变量的数字值而不是字符串值(甚至使用as.factor选项)。

data$AreaFinal <- ifelse(is.na(data$Area2), data$Area1, data$Area2)
data$AreaFinal <- ifelse(is.na(data$Area2), as.factor(data$Area1), data$Area2)

此代码看起来还可以吗?在我的实际数据中,区域1是一个因素,区域2是一个字符。

先谢谢您! 马文

1 个答案:

答案 0 :(得分:0)

解决方案是将Area1变量从factor转换为字符data$area1<- as.character(data$area1)。然后data$areafinal<- with(data, ifelse(is.na(area), area1, area2))