“如何处理”;不适用;在R中为假
我处理的是一个大数据集,我试图在两列中调用满足条件的行。但是,我想从分析中排除某些值,我认为将它们设置为“NA”是最好的。更复杂的是,如果其中一列中有“NA”,我仍然想看看另一列的数值是否仍然满足条件。下面是我的数据集示例“如何处理”;不适用;在R中为假,r,if-statement,na,R,If Statement,Na,我处理的是一个大数据集,我试图在两列中调用满足条件的行。但是,我想从分析中排除某些值,我认为将它们设置为“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 = 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行和第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>
test$G5和test$col2>5,“是”、“否”)
col1 col2 G5
1015是的
2 15号
3 15 2否
4 2 2不
5 NA 15
6 15 NA
设置ifelse语句以便将“NA”视为“False”的最佳方法是什么?。我认为问题在于,当ifesle考虑任一列并且逻辑测试使用“NA”执行时,它只能返回“NA”
这是我第一次发布这个,所以我的格式可能很糟糕。。。对不起
谢谢您测试$G5和测试$col2>5)%TRUE%中的“是”、“否”)
%TRUE | is.na(test$col1))中的test$G5%
有关更多信息,请参见%TRUE“是”、“否”中的测试$G5和测试$col2>5)%code>
%TRUE | is.na(test$col1))中的test$G5%
请参阅以了解更多信息,我认为最有益的方法是在功能时使用
dplyr
的case\u,并明确说明您提到的NA
案例应如何处理
复制您的示例(注意,我在这里显式设置了NAs。您的NAs是R无法处理数字向量中的字符串(“NA”)的结果
col1 = as.numeric(c(10, 2, 15, 2, NA_real_, 15))
col2 = as.numeric(c(15, 15, 2, 2, 15, NA_real_))
test <- data.frame(col1, col2)
对我来说,我认为最有益的方法是在
函数时使用dplyr
的case\u,并明确说明应该如何处理您提到的NA
案例
复制您的示例(注意,我在这里显式设置了NAs。您的NAs是R无法处理数字向量中的字符串(“NA”)的结果
col1 = as.numeric(c(10, 2, 15, 2, NA_real_, 15))
col2 = as.numeric(c(15, 15, 2, 2, 15, NA_real_))
test <- data.frame(col1, col2)
这是一种没有ifelse
或任何其他决策指令(开关
或case\u当
时)的方法
i5&col2>5)| is.na(col1)| is.na(col2))
测试$G5这是一种没有ifelse
或任何其他决策指令(开关
或案例_当
时)的方法
i5&col2>5)| is.na(col1)| is.na(col2))
测试$G5这里是另一个使用rowSums
test$G5 <- c("No", "Yes")[(rowSums(is.na(test) | test > 5) == ncol(test)) + 1]
test
# 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
下面是另一个使用rowSums
test$G5 <- c("No", "Yes")[(rowSums(is.na(test) | test > 5) == ncol(test)) + 1]
test
# 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
测试$G5)|是.na(测试$col2)和(测试$col1>5)|!是.na(test$col1 | test$col2)和(test$col2>5和test$col2>5),“是”、“否”)可能是@ShirinYavari的重复项吗?我认为您处理了na
的反向操作,它们应该以“否”结尾。如果我有这个,请纠正我wrong@astrofunkswag根据问题所示,答案是对的,但你的答案是相反的。哎呀,哎呀?!哦,我看到了帖子的这一部分,这是OP想要的,但这与将NA
视为false不一致,它应该被忽略/视为truetest$G5 5)| is.NA(test$col2)&(test$col1>5)|!是.na(test$col1 | test$col2)和(test$col2>5和test$col2>5),“是”、“否”)可能是@ShirinYavari的重复项吗?我认为您处理了na
的反向操作,它们应该以“否”结尾。如果我有这个,请纠正我wrong@astrofunkswag根据问题所示,答案是对的,但你的答案是相反的。哎呀,哎呀?!哦,我看到了帖子的这一部分,这是OP想要的,但这与将NA
视为false不一致,应该将其忽略/视为true
i <- with(test, (col1 > 5 & col2 > 5) | is.na(col1) | is.na(col2))
test$G5 <- c("No", "Yes")[i + 1]
test
# 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
test$G5 <- c("No", "Yes")[(rowSums(is.na(test) | test > 5) == ncol(test)) + 1]
test
# 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
test[is.na(test)] <- Inf
test$G5 <- c("No", "Yes")[(rowSums(test > 5) == ncol(test))+ 1]