有没有更有效的方法使用dplyr过滤器从数据帧中删除行?

时间:2016-01-20 16:34:56

标签: regex r dplyr

我有一个大型数据框,我希望删除一些主题(过程2中主题ID为“4”的所有主题)

示例(和减少)数据集在这里:http://pastebin.com/raw/Dz6xxgM3

我的dplyr过滤行是

library(dplyr)
df<-read.table("http://pastebin.com/raw/Dz6xxgM3")
  filter(df,
    proc == "1" | proc == "3" | proc== "4" | proc =="5"  | (proc=="2" & subject != "4") 
  )

这有效但看起来很狡猾 - 我必须使用正则表达式来包含所有过程以及proc == 2.

在过程2中是否有更优雅/有效的方法删除主题4的行?

干杯 皮特

1 个答案:

答案 0 :(得分:5)

我们可以使用%in%代替==来检查&#39; proc&#39;中的多个值。列。

 df %>% 
     filter(proc %in% c(1,3:5)|(proc==2 & subject !=4))

你可能会缩小到像

这样的非表达式
filter(!(subject=='4' & proc=='2'))

作为替代方案。