NA毫无理由地出现

时间:2016-04-24 12:20:35

标签: r frame na

我进入了

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

对数据帧进行子集化,但新帧包含一些绝对不存在的“NA”行。那是为什么?

1 个答案:

答案 0 :(得分:1)

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

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

即。即使一行中有TRUE值,如果另一列中的相应元素为NA,也可以转为NA

TRUE & NA
#[1] NA

或两者都是NA

NA & NA
#[1] NA

但是,FALSE和NA返回FALSE

FALSE & NA
#[1] FALSE

使用is.na,我们得到FALSE的返回值(对于上面的示例)

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"))))