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

Ifelse NULL: obtaining numeric instead of string values

这似乎很容易做到,但我找不到答案。我的数据框中有两个关于区域名称的变量。我想使用这两个变量创建一个最终的 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是一个字符。

提前致谢! 马文

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