grepl для таблицы dplyr sql?

есть ли обходной путь, чтобы использовать что-то вроде

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

спасибо Christof


person ckluss    schedule 14.12.2014    source источник
comment
Используйте SQL IN. sql-tutorial.net/SQL-IN.asp   -  person Richie Cotton    schedule 14.12.2014
comment
filter(df, location %in% c("a", "b", "c") или используйте semi_join()   -  person hadley    schedule 14.12.2014
comment
@hadley спасибо за ваши блестящие библиотеки. Есть ли способ получить также сопоставление с образцом (SQL LIKE вместо IN)? %in%и semi_join() сделать точное совпадение, если я правильно понял   -  person ckluss    schedule 14.12.2014
comment
Используйте 1_   -  person hadley    schedule 16.12.2014
comment
@hadley, это круто, спасибо!   -  person ckluss    schedule 16.12.2014
comment
Где документируются эти операторы?   -  person dorvak    schedule 09.01.2015
comment
@dorvak ?translate_sqlили прямой cran.r-project.org/web/packages/ dplyr / index.html dplyr.pdf p.65   -  person ckluss    schedule 09.01.2015
comment
x %like% "y" будет соответствовать всей переменной, а x %like% "%y%" будет искать шаблон y в столбце x.   -  person Veera    schedule 13.09.2017


Ответы (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%'
person Seth Raithel    schedule 14.11.2017