Während ich dem Vorschlag, SQL zu lernen, von ganzem Herzen zustimme, können Sie die Tatsache nutzen, dass dplyr
zieht keine Daten, bis es unbedingt erforderlich ist, und erstellt die Abfrage mit dplyr
, fügen Sie TO TABLE
hinzu -Klausel und führen Sie dann die SQL-Anweisung mit dplyr::do()
aus , wie in:
# CREATE A DATABASE WITH A 'FLIGHTS' TABLE
library(RSQLite)
library(dplyr)
library(nycflights13)
my_db <- src_sqlite("~/my_db.sqlite3", create = T)
flights_sqlite <- copy_to(my_db, flights, temporary = FALSE, indexes = list(
c("year", "month", "day"), "carrier", "tailnum"))
# BUILD A QUERY
QUERY = filter(flights_sqlite, year == 2013, month == 1, day == 1) %>%
select( year, month, day, carrier, dep_delay, air_time, distance) %>%
mutate( speed = distance / air_time * 60) %>%
arrange( year, month, day, carrier)
# ADD THE "TO TABLE" CLAUSE AND EXECUTE THE QUERY
do(paste(unclass(QUERY$query$sql), "TO TABLE foo"))
Sie könnten sogar eine kleine Funktion schreiben, die dies tut:
to_table <- function(qry,tbl)
dplyr::do(paste(unclass(qry$query$sql), "TO TABLE",tbl))
und leiten Sie die Abfrage wie folgt an diese Funktion weiter:
filter(flights_sqlite, year == 2013, month == 1, day == 1) %>%
select( year, month, day, carrier, dep_delay, air_time, distance) %>%
mutate( speed = distance / air_time * 60) %>%
arrange( year, month, day, carrier) %>%
to_table('foo')