NA的行意外地返回

时间:2015-03-25 15:01:31

标签: r

我觉得我在这里遗漏了一些明显的东西,但我看不出有什么问题......

我所做的只是制作更大数据帧(all.score3)的数据帧(all)。较大的数据帧中没有所有NA行。

> class(all)
[1] "data.frame"
> table(all$Scoring, useNA = "always")

   1    2    3 <NA> 
 774  772  768    0 
> table(all$Resolution_Desc, useNA = "always")

No Response    Resolved        <NA> 
        293         962        1059 
> class(all$Resolution_Desc)
[1] "character"
> class(all$Scoring)
[1] "numeric"
> all.score3 <- all[all$Scoring == 3 & all$Resolution_Desc == "Resolved", ]
> dim(all.score3)
[1] 677  11
> tail(all.score3)
             ID1      ID2   Decile Scoring GroupNo  Treat Result1 Result2 flag50 Resolution_Desc nout_2way
NA.362      <NA>      NA     NA      NA   <NA>  <NA>       NA       NA     NA            <NA>        NA
NA.363      <NA>      NA     NA      NA   <NA>  <NA>       NA       NA     NA            <NA>        NA
NA.364      <NA>      NA     NA      NA   <NA>  <NA>       NA       NA     NA            <NA>        NA
NA.365      <NA>      NA     NA      NA   <NA>  <NA>       NA       NA     NA            <NA>        NA
NA.366      <NA>      NA     NA      NA   <NA>  <NA>       NA       NA     NA            <NA>        NA
NA.367      <NA>      NA     NA      NA   <NA>  <NA>       NA       NA     NA            <NA>        NA
> cat("What ????")
What ????

它必须与all$Resolution_Desc == "Resolved"过滤器有关,因为如果我只使用该过滤器,那么也会产生NA行,但对于另一个过滤器则不然:

all.score3 <- all[all$Resolution_Desc == "Resolved", ]

为什么此操作会产生NA行,这些行在较大的数据帧中不存在,并且根据行过滤器中的条件,不应该出现在结果数据帧中?

注意 - 我可以解决此问题,例如使用sqldf(或可能使用subset),但我仍然想了解这里发生了什么。我检查以确保我使用&正确的方式,而不是使用&&或其他东西,而我找到的资源似乎表明这应该是正确的......

0 个答案:

没有答案