我进入了
data[data$Ozone>31 & data$Temp>90,]
对数据帧进行子集化,但新帧包含一些绝对不存在的“NA”行。那是为什么?
答案 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"))))