dplyr SQL表中的grepl是什么意思?

11
有没有解决方法可以使用类似于这样的东西?
filter(df, grepl("A|B|C",location))

如何在dplyr SQL表中进行模糊查询?在SQL中,这可能是一个LIKE操作。当然,我可以将SQL表转换为R数据表,但它非常大。(http://cran.r-project.org/web/packages/dplyr/vignettes/databases.html)目前我得到的结果是:

Error in sqliteSendQuery(conn, statement) : 
  error in statement: no such function: GREPL

thx Christof


10
筛选数据框 df 中 location 列包含 "a"、"b" 或 "c" 的行,可以使用 filter(df, location %in% c("a", "b", "c")。或者使用 semi_join() 函数。 - hadley
1
@hadley 感谢您出色的库。是否有一种方法可以获得模式匹配(SQL LIKE而不是IN)?如果我理解正确,%in%semi_join()只进行精确匹配。 - ckluss
16
使用 x %like% y - hadley
1
这些运算符在哪里有文档记录? - dorvak
3
x %like% "y"会匹配整个变量,而x %like% "%y%"会在列x中进行y的模式匹配。 - Veera
显示剩余3条评论
1个回答

3

使用 sql 直接将表达式翻译成 sql 是一种选择。

sql_table %>% filter( sql("location LIKE 'A%' 
                           OR location LIKE 'B%' 
                           OR location LIKE 'C%'")

这将将以下内容注入到您查询的WHERE语句中:
<SQL> location LIKE 'A%' OR location LIKE 'B%' OR location LIKE 'C%'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接