R无法在我的数据集中识别NA

时间:2017-08-31 18:51:05

标签: r

我很困惑的事实是R无法识别我的数据集daily中的NA。快速检查daily可能会让人相信变量OBLIGOR_ID中没有NA:

class(daily)
# "data.frame"

table(is.na(daily$OBLIGOR_ID))
#  FALSE
# 207775

但是,如果为OBLIGOR_ID为62512的所有观察结果绘制ADJUSTED_ORR,则可以找到

daily[daily$ADJUSTED_ORR==62512,c('OBLIGOR_ID')]

# [1]   NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# [60]  NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# [119] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# [178] NA NA NA NA NA NA NA

is.na(daily[daily$ADJUSTED_ORR==62512,c('OBLIGOR_ID')])

# [1]   TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [36]  TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [71]  TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [106] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [141] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [176] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

样本数据

PIN <- c("case1", "case2", "case3", "case4", "case5")
STAMP_1 <- c(1, 1, 1, 1, 1)
STAMP_2 <- c(NA, 1, 1, NA, 1)
STAMP_3 <- c(1, NA, 1, 1, NA)
STAMP_4 <- c(NA, NA, 1, 1, NA)
STAMP_5 <- c(1, NA, NA, 1, NA)
dat <- data.frame(PIN, STAMP_1, STAMP_2, STAMP_3, STAMP_4, STAMP_5)
dat
    PIN STAMP_1 STAMP_2 STAMP_3 STAMP_4 STAMP_5
1 case1       1      NA       1      NA       1
2 case2       1       1      NA      NA      NA
3 case3       1       1       1       1      NA
4 case4       1      NA       1       1       1
5 case5       1       1      NA      NA      NA

在你的情况下:

dat[dat$STAMP_2==1,'STAMP_3']
[1] NA NA  1 NA NA

NA

时过滤的正确方法

基础R

dat[which(dat$STAMP_2==1),'STAMP_3']
   [1] NA  1 NA

subset(dat, STAMP_2 ==1, select=c('STAMP_3'))

  STAMP_3
2      NA
3       1
5      NA

答案 1 :(得分:0)

这很可能是由于ADJUSTED_ORR包含NA值,您可以尝试以下示例

{{1}}