我正在尝试使用dplyr的if_else语句对data_frame中的新列进行突变。但是,如果TRUE的默认值是NA,则我分配给向量的值是FALSE值。我不确定它是否与变量类型有关或与变量类型有关,但对此我将非常感谢。
我的数据
data <-
data.frame(SP = c("A","B","C","D","E"),
Sale = c("Y","Y",NA,"Y",NA),
WWS = c(NA,NA,"Y",NA,"Y"))
现有代码以添加新列
data %>%
mutate(RMV = if_else(
Sale == "Y" & WWS != "Y", "Keep","-"))
运行上面的代码时,所有TRUE值都默认为NA,而不是Keep。
答案 0 :(得分:1)
您想要这样的东西吗?
data %>%
mutate(RMV = (Sale == "Y" & !is.na(Sale)) & (WWS != "Y" | is.na(WWS)))
SP Sale WWS RMV
1 A Y <NA> TRUE
2 B Y <NA> TRUE
3 C <NA> Y FALSE
4 D Y <NA> TRUE
5 E <NA> Y FALSE
?Comparison
的帮助中说明了您最初尝试的问题:
缺少值(NA)和NaN值甚至与它们自己也无法比较,因此涉及它们的比较将始终导致NA。
基本上,您不能使用任何比较运算符来比较NA。因此,请使用以下任何一种方法:
x < y
x > y
x <= y
x >= y
x == y
x != y
...上面x或y中的一个(或两个!)均为NA的情况下,始终会得出NA。