R 为什么此ifelse语句会生成NAs?

R 为什么此ifelse语句会生成NAs?,r,R,我正在尝试基于数据集中的其他变量创建一个新变量。我曾经使用ifelse做过类似的任务,但是当我这次尝试时,当条件不满足时,我得到了NA 我希望新变量基于的变量都是二进制的——“是”或“否”。如果其他变量中有任何一个是“是”,我希望将新变量编码为“是”,如果没有一个是编码为“是”,则编码为“否”。当我运行ifelse时,我得到了预期的“Yes”数,但我预期的“No”数是NA 我尝试了以下方法: data$new <- ifelse(var1=="Yes" | var2=="Yes" | va

我正在尝试基于数据集中的其他变量创建一个新变量。我曾经使用ifelse做过类似的任务,但是当我这次尝试时,当条件不满足时,我得到了NA

我希望新变量基于的变量都是二进制的——“是”或“否”。如果其他变量中有任何一个是“是”,我希望将新变量编码为“是”,如果没有一个是编码为“是”,则编码为“否”。当我运行ifelse时,我得到了预期的“Yes”数,但我预期的“No”数是NA

我尝试了以下方法:

data$new <- ifelse(var1=="Yes" | var2=="Yes" | var3=="Yes","Yes","No")

data$new如果存在NA,则
=
返回
NA
。一个选项是
cbind
变量“var1”、“var2”、“var3”(不清楚它是data.frame列还是独立向量),与
“Yes”
比较,要创建逻辑矩阵,请使用
行和
获取“Yes”字符串的和。注意
na.rm=TRUE
,它将处理
na
元素(如果有)。使用行和,检查值是否大于0,然后选择“是”或“否”


检查其产生NA的原因

v1 <- c("Yes", "No", NA)
v2 <- c("No", NA, "Yes")

(v1 == "Yes")|(v2 == "Yes")
#[1] TRUE   NA TRUE

v1如果存在NA,则
=
返回
NA
。一个选项是
cbind
变量“var1”、“var2”、“var3”(不清楚它是data.frame列还是独立向量),与
“Yes”
比较,要创建逻辑矩阵,请使用
行和
获取“Yes”字符串的和。注意
na.rm=TRUE
,它将处理
na
元素(如果有)。使用行和,检查值是否大于0,然后选择“是”或“否”


检查其产生NA的原因

v1 <- c("Yes", "No", NA)
v2 <- c("No", NA, "Yes")

(v1 == "Yes")|(v2 == "Yes")
#[1] TRUE   NA TRUE
v1尝试complete.cases()在创建变量时省略NA

df$new <- ifelse((var1 =="Yes"| var2=="Yes"|var3=="Yes")& complete.cases(df), "Yes", "No")


df$new尝试complete.cases()在创建变量时省略NA

df$new <- ifelse((var1 =="Yes"| var2=="Yes"|var3=="Yes")& complete.cases(df), "Yes", "No")



df$new这可能是因为您有
NA
元素i任何一个'var',这可能是因为您有
NA
元素i任何一个'var',谢谢,这就是问题所在。我以为我已经处理了丢失的数据,但事实证明我没有。非常感谢你的帮助。谢谢,这就是问题所在。我以为我已经处理了丢失的数据,但事实证明我没有。非常感谢你的帮助。