grepl 用于 dplyr sql 表?

Posted

技术标签:

【中文标题】grepl 用于 dplyr sql 表?【英文标题】:grepl for dplyr sql table? 【发布时间】:2015-02-12 14:40:54 【问题描述】:

有没有办法使用类似的东西

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

谢谢 克里斯托夫

【问题讨论】:

filter(df, location %in% c("a", "b", "c"),或使用semi_join() @hadley 感谢您的出色图书馆。有没有办法获得模式匹配(SQL LIKE 而不是 IN)? %in%semi_join()做完全匹配,如果我理解正确的话 使用x %like% y 这些操作符记录在哪里? x %like% "y" 将匹配整个变量,而x %like% "%y%" 将在 x 列中查找模式 y。 【参考方案1】:

使用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%'

【讨论】:

以上是关于grepl 用于 dplyr sql 表?的主要内容,如果未能解决你的问题,请参考以下文章

Python 相当于 R 的 grepl 和 dplyr 过滤器 [重复]

使用 dplyr 的快速频率和百分比表

R dplyr:使用字符串函数重命名变量

dplyr:在 R 中按字母顺序排列列

从 dbplyr 中的给定 SQL 查询开始使用 dbplyr

使用 dplyr contains() 基于多个字符串选择列