我有一个大型数据框,我希望从中删除一些主题(过程 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 的行?
干杯 皮特
最佳答案
我们可以使用 %in%
而不是 ==
来检查 'proc' 列中的多个值。
df %>%
filter(proc %in% c(1,3:5)|(proc==2 & subject !=4))
你可能会压缩成一个 not 表达式,比如
filter(!(subject=='4' & proc=='2'))
作为替代方案。
关于regex - 是否有更有效的方法使用 dplyr 过滤器从数据框中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905481/