通过子集创建的幻影NA记录



好吧,我回来了,这次我带来了一个可复制的例子。

fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
download.file(fileURL, destfile = "./acs.csv")
acs <- read.csv("./acs.csv")
mySubset <- acs[acs$ACR == 3 & acs$AGS == 6, ]

我期望在mySubset中看到的是满足该条件的6,496中的77个记录。但是,我最终得到的是我的77个预期记录和1,036个意外记录,这些记录完全是所有列的NA

我在这里不了解什么?

可重复的示例:

df <- data.frame(a=c(NA, 1, 2 ,3), b = c("a", "b", "c", "d"))
df[c(NA, TRUE, FALSE, FALSE), ]
#     a    b
#  NA NA <NA>
# 2   1    b

基本上,滤波器中的NA默认整个行将到NAS。

要解决此行为,您可以使用is.na(df$a)检查缺失值。

最新更新