我有一个大型数据框,我希望删除一些主题(过程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的行?
干杯 皮特
答案 0 :(得分:5)
我们可以使用%in%
代替==
来检查&#39; proc&#39;中的多个值。列。
df %>%
filter(proc %in% c(1,3:5)|(proc==2 & subject !=4))
你可能会缩小到像
这样的非表达式filter(!(subject=='4' & proc=='2'))
作为替代方案。