2014-12-14 13 views
9

ist es eine Abhilfe, wie etwas zu verwendengrepl für dplyr sql table?

filter(df, grepl("A|B|C",location)) 

für eine dplyr SQL-Tabelle? In SQL ist es ein LIKE. Natürlich könnte ich die SQL-Tabelle in eine R-Datentabelle konvertieren, aber sie ist sehr groß. (http://cran.r-project.org/web/packages/dplyr/vignettes/databases.html) Im Moment bekomme ich

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

thx Christof

+0

Verwenden Sie SQL 'IN'. http://www.sql-tutorial.net/SQL-IN.asp –

+10

'filter (df, Ort% in% c (" a "," b "," c ")', oder verwenden Sie ein 'semi_join() ' – hadley

+1

@hadley thx für Ihre brillianten Bibliotheken.Es gibt eine Möglichkeit, auch Mustererkennung (SQL LIKE anstelle von IN) zu bekommen?'% In% 'und' semi_join() 'tun genaue Übereinstimmung, wenn ich es richtig verstanden habe – ckluss

Antwort

0

sql Mit dem Ausdruck direkt in SQL ist eine Option zu übersetzen.

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

, welche die folgenden in die WHERE-Anweisung der Abfrage wird injizieren:

<SQL> location LIKE 'A%' OR location LIKE 'B%' OR location LIKE 'C%'