提问人:Hack-R 提问时间:12/6/2016 更新时间:12/7/2016 访问量:43
为什么在子集 data.frame 时创建 NA 的尺寸是一致的,而没有 NA?
Why are NA's being created when subsetting data.frame's with conformable dimensions and no NA's?
问:
我用来通过基本 R 索引对这些 data.frame 进行子集的项目中没有 NA 值,但在我的结果中几乎有一半变成了 NA。尺寸是合格的,我检查了匹配的每一块,以确保它单独工作。
对数据进行采样以便我可以使用是不可行的,因为它破坏了匹配,因此我上传了 .RDS 数据到 GitHub:dput()
https://github.com/hack-r/stackoverflow_NA_question
要从 GitHub 下载文件,您可以克隆存储库或单击文件,然后单击“下载”按钮。要克隆存储库,请键入 。git clone https://github.com/hack-r/stackoverflow_NA_question.git
model_data <- readRDS("model_data.RDS")
StartDates.next3.prev <- readRDS("startDates.next3.prev.RDS")
pred <- readRDS("pred.RDS")
table(is.na(pred))
# FALSE
# 156930
table(is.na(model_data$flag_prev))
# FALSE
# 52716
nrow(pred) == length(model_data$flag_prev[model_data$flag_prev=="Y"])
# [1] TRUE
StartDates.next3.prev$Start_Date[1]
# [1] "2016-01-04"
table(model_data$matched_start_date[model_data$flag_prev=="Y"]==startDates.next3.prev$Start_Date[1])
# FALSE TRUE
# 21872 9514
tmp <- pred$Enroll.in.term.1[model_data$flag_prev == "Y" &
model_data$matched_start_date ==
StartDates.next3.prev$Start_Date[1]]
table(is.na(tmp)) # Why are 4,130 NA??
# FALSE TRUE
# 5384 4130
应该有 9,514 个结果观测值,但它们都应该是非 NA。
答:
1赞
mt1022
12/7/2016
#1
length(pred$Enroll.in.term.1)
# 31386
x <- model_data$flag_prev == "Y"
y <- model_data$matched_start_date == StartDates.next3.prev$Start_Date[1]
sum(which((x & y) == T) > 31386)
# 4130
问题是 的行数比 .因此,您用于子集的逻辑向量比 长得多。因此,将恰好有 4130 个 NA。model_data
pred
pred
评论
table(is.na(pred))
pred$Enroll.in.term.1
table(is.na(pred$Enroll.in.term.1))
FALSE 31386
model_data
model_data <- model_data[model_data$flag_prev == "Y",]