【发布时间】:2026-02-09 15:05:01
【问题描述】:
我正在处理一个大型数据集,我正在尝试调用哪一行满足两列中的条件。但是,我想从分析中排除某些值,我认为将它们设置为“NA”是最好的。更复杂的是,如果其中一个列中有“NA”,我仍然想查看具有数值的另一列是否仍然满足条件。下面是我的数据集示例。
col1 = as.numeric(c(10, 2, 15, 2, "NA", 15))
col2 = as.numeric(c(15, 15, 2, 2, 15, "NA"))
test <- data.frame(col1, col2)
假设我的截止值是 5,所以我想要以下结果:
col1 col2 G5
1 10 15 Yes
2 2 15 No
3 15 2 No
4 2 2 No
5 NA 15 Yes
6 15 NA Yes
我尝试了以下方法,但第 5 行和第 6 行返回为“NA”,我不知道如何解决这个问题。
test$G5 <- ifelse(test$col1 > 5 & test$col2 > 5, "Yes", "No")
col1 col2 G5
1 10 15 Yes
2 2 15 No
3 15 2 No
4 2 2 No
5 NA 15 <NA>
6 15 NA <NA>
设置 ifelse 语句以便将“NA”视为“False”的最佳方法是什么?我认为问题在于,当 ifesle 考虑任一列并且使用“NA”执行逻辑测试时,它只能返回“NA”。
这是我第一次发布这个,所以我的格式可能很糟糕......对此感到抱歉!
谢谢
【问题讨论】:
-
test$G5 5) | is.na(test$col2) & (test$col1 > 5) | ! is.na(test$col1|test$col2) & (test$col2 > 5 & test$col2 > 5), "Yes", "No")
-
@ShirinYavari 我认为你处理了
NA的倒退,他们最终应该是“不”。 OP,如果我有这个错误,请纠正我 -
@astrofunkswag 根据问题中显示的内容,这是正确的,但您的答案是倒退的。好不好?!
-
哦,我看到了帖子的那一部分,这就是 OP 想要的,但这与将
NA视为 false 不一致,它应该被忽略/视为 true
标签: r if-statement na