2014-12-14 17 views
9

c'è una soluzione per usare qualcosa comegrepl per dplyr sql table?

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

per una tabella di SQL dplyr? In SQL è probabilmente un LIKE. Di cource potrei convertire la tabella SQL in una tabella di dati R, ma è molto grande. (http://cran.r-project.org/web/packages/dplyr/vignettes/databases.html) Al momento ottengo

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

thx Christof

+0

Utilizzare SQL 'tale dicitura. http://www.sql-tutorial.net/SQL-IN.asp –

+10

'filter (df, posizione% in% c (" a "," b "," c ")', o usa un 'semi_join() ' – hadley

+1

@hadley thx per le tue librerie brillanti C'è un modo per ottenere anche la corrispondenza dei pattern (SQL LIKE invece di IN)?'% In% 'e' semi_join() 'fanno la corrispondenza esatta, se ho capito correttamente – ckluss

risposta

0

Utilizzando sql di tradurre l'espressione direttamente in SQL è un'opzione.

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

Quale inietterà quanto segue nella WHERE della query:

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