Si no estás de humor para escribir consultas SQL, entonces usa dplyr para generar código SQL automáticamente para ti. El paquete dplyr es genial para trabajar con marcos de datos. Junto con dbplyr, le permite trabajar con una tabla como si fuera un marco de datos típico.
Instalemos los requisitos previos y conectémonos a la base de datos:
123456N-; install.packages(c($0027dplyr$0027,$0027dbplyr$0027))> library(dplyr);library(RSQLite);
R
Mira la línea 4: usamos dbConnect() de nuevo. Presta atención al primer argumento: es SQLite(), no sólo SQLite. En la línea 5, la función tbl() se encarga de devolver los datos de la tabla de coches a través de la conexión.
Veamos cómo puede ayudarnos el dplyr:
1234567891011121314151617; coches %(mpg)# Fuente: lazy query [?? x 1]# Base de datos: sqlite 3.30. 1 [C:N-Usuarios y DocumentosN-jugar-ejemplo.db] mpg N-;dbl;121221322.8421.4518.7618.1714.3824.4922.81019.2# ... con más filas... R¿Qué es esto?
Bueno, %>% es sobre la canalización de datos de izquierda a derecha, de los coches a la función select() que devuelve la columna mpg. Léela como y luego para mayor comodidad: coches, y luego selecciona mpg, y así sucesivamente.
Probemos con otra.
De nuevo, ¿cómo podemos conseguir mpg y número de cilindros sólo para coches con mpg superior a 30, ordenados por mpg en orden ascendente?
1234567891011121314; coches % % select(mpg, cyl)% % filtro(mpg)30)% arregl(mpg)# Fuente: lazy query [?? x 2]# Base de datos: sqlite 3. 30.1 [C:N-UsuariosNyDocumentosN-ejemplo.db]# Ordenado por: mpg mpg cyl N-;dbl;N-;130.44230.44332.44433.94;R
Mira la primera línea: coches, luego selecciona mpg y cyl, luego filtra por mpg mayores de 30, luego ordena por mpg. Suena bastante natural, ¿verdad? Además, los resultados son los mismos que al usar la consulta SQL.
Por cierto, ¿mencioné que dplyr genera SQL automáticamente? Usemos la función show_query() para ver el SQL generado.
123456789101112; cars %{N-seleccionar(mpg, cyl)%{N-filtrar(mpg)%-30};% arreglar(mpg)%{N-mostrar_preguntas()};SQL{N-Seleccionar *FROM (SELECCIONAR `mpg`, `cyl`FROM `coches`)DONDE (`mpg`;30. 0)ORDENAR POR `mpg`;R
Esto es muy similar a la consulta SQL que escribimos minuciosamente en la sección anterior. Es genial tener las dos opciones: SQL manual y dplyr!