我有一个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'。
答案 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中实现的。