一次返回包含NA和值的行

时间:2015-07-17 16:29:42

标签: sql r sqldf

我有一个df

ID <- c(101,102,103,104) 
Status <- c('P','F_Avg','F_Sig',NA) 
df <- data.frame(ID,Status)

我正在尝试过滤失败的那些并返回Pass和NA,但我无法这样做。我知道这是一个基本问题,但请耐心帮助我。

我尝试了以下

df1 <-  sqldf("SELECT * FROM df
              WHERE Status NOT LIKE 'F%'")

它只返回一个观察值,即row1为'P',但我还需要row4'NA'。

2 个答案:

答案 0 :(得分:2)

df1 <-  sqldf("SELECT * FROM df
              WHERE (Status NOT LIKE 'F%'
              OR Status IS null)")

输出:

   ID Status
1 101      P
2 104   <NA>

使用dplyr

library(dplyr)
filter(df, !grepl("^F", Status))

答案 1 :(得分:1)

你的sql必须是这样的:

SELECT * FROM df
WHERE Status NOT LIKE 'F%'
or status = 'NA'

我不确定你是如何在r中实现的。