NA无缘无故出现

NA showing up for no reason

我进入了

 data[data$Ozone>31 & data$Temp>90,]

对数据帧进行子集化,但新帧包含 "NA" 的某些行,这些行肯定不存在。这是为什么?

如果列中有 NA 值,即使我们转换为逻辑向量,它仍然会显示为 NA。为避免这种情况,我们还可以 is.na 也为子集创建逻辑向量。

data[data$Ozone>31 & !is.na(data$Ozone) & data$Temp>90 & !is.na(data$Temp),]

即如果另一列中的相应元素为 NA

,即使一行中有 TRUE 值也可以转为 NA
TRUE & NA
#[1] NA

或者如果两者都是 NA

NA & NA
#[1] NA

但是,FALSE 和 NA returns FALSE

FALSE & NA
#[1] FALSE

通过使用is.na,我们得到FALSE的return值(对于上面的例子)

TRUE & !is.na(NA)
#FALSE

返回 NA 将创建新的 NA 行。

数据

set.seed(24)
data <- as.data.frame(matrix(sample(c(NA, 1:120), 2*500, replace=TRUE),
   ncol=2, dimnames=list(NULL, c("Ozone", "Temp"))))