regex - 是否有更有效的方法使用 dplyr 过滤器从数据框中删除行?

标签 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 的行?

干杯 皮特

最佳答案

我们可以使用 %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/

相关文章:

r - 误差延迟微分方程 deSolve (dede)

r - 错误 : Must supply a symbol or a string as argument

r - 如何有条件地将多列中的值替换为 NA

objective-c - 在大型 NSString 中有效地找到许多关键字中的第一个

javascript - 如何解析JS用户名?

php - 如何在文本中找到任何单词但在标签内区分?

php - 使用 PHP 将正则表达式替换为正则表达式

r - 基本 R 中每个条形的不同颜色的堆叠条形图

r - ggplot2 带有渐变颜色填充的水平条形图

r - 计算一行中第一个和最后一个观察值之间的差异,其中每行都不同