r语言 - 为什么 dplyr 过滤器没有捕获 NA



我有以下数据帧

FileNumber ReferralDate Status
1  510709784   2018-10-07 CLOSED
2         NA         <NA>   <NA>
3  510704781   2018-05-04 CLOSED
4         NA         <NA>   <NA>
5         NA         <NA>   <NA>
6         NA         <NA>   <NA>

这是数据帧的结构

'data.frame':   6 obs. of  3 variables:
$ FileNumber  : int  510709784 NA 510704781 NA NA NA
$ ReferralDate: chr  "2018-10-07" NA "2018-05-04" NA ...
$ Status      : chr  "CLOSED" NA "CLOSED" NA ...

当我尝试使用以下代码在FileNumber列或Status列中捕获NA值时。但它似乎不起作用。为什么会发生这种情况

> df%>%filter(Status=="<NA>")
[1] FileNumber   ReferralDate Status      
<0 rows> (or 0-length row.names)
> df%>%mutate(Status=as.factor(Status))%>%filter(Status=="<NA>")
[1] FileNumber   ReferralDate Status      
<0 rows> (or 0-length row.names)
> df%>%filter(FileNumber=="NA")
[1] FileNumber   ReferralDate Status      
<0 rows> (or 0-length row.names)
library(dplyr)
df <- data.frame(FileNumber = c(510709784, NA, 510704781, NA, NA, NA),
ReferralDate = c("2018-10-07", NA, "2018-05-04", NA, NA, NA),
Status = c("CLOSED", NA, "CLOSED", NA, NA, NA),
stringsAsFactors = FALSE)

使用is.na()指代NA,而不是==

df %>% filter(is.na(Status))
FileNumber ReferralDate Status
1         NA         <NA>   <NA>
2         NA         <NA>   <NA>
3         NA         <NA>   <NA>
4         NA         <NA>   <NA>

最新更新