जबकि मैं पूरे दिल से SQL सीखने के सुझाव से सहमत हूँ, आप इस तथ्य का लाभ उठा सकते हैं कि dplyr
डेटा को तब तक नहीं खींचता जब तक कि उसे dplyr
. का उपयोग करके पूरी तरह से क्वेरी बनाना और बनाना न पड़े , TO TABLE
खंड, और फिर dplyr::do()
. का उपयोग करके SQL कथन चलाएँ , जैसा कि:
# 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"))
आप एक छोटा सा फंक्टोइन भी लिख सकते हैं जो ऐसा करता है:
to_table <- function(qry,tbl)
dplyr::do(paste(unclass(qry$query$sql), "TO TABLE",tbl))
और क्वेरी को उस फ़ंक्शन में इस प्रकार पाइप करें:
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')