【发布时间】:2019-04-02 15:12:10
【问题描述】:
这似乎很容易做到,但我找不到答案。我的数据框中有两个关于区域名称的变量。我想使用这两个变量创建一个最终的区域变量。如果 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)
这段代码看起来没问题吗?在我的真实数据中,Area1 是一个因子,Area 2 是一个字符。
提前感谢您! 马文
【问题讨论】:
-
我认为你需要
stringsAsFactors = FALSE我data.frame打电话顺便说一句,你没有NAelements。它是""。条件应该是ifelse(data$Area2 == "", data$Area1, data$Area2)# [1] "ABC" "ABC" "AAA" "AAA" "AAA" -
要做第一部分“stringsAsFactors = FALSE i the data.frame”。我做了 data
-
第二个
ifelse不看起来不错。如果因子水平(Area1和Area2)不同,则会引发警告。 -
Hi Rui 感谢您抽出宝贵的时间。我尝试了很多东西,但仍然无法得到它。你会怎么做?
标签: r if-statement na dplyr