Nuevas equivalencias (y diferencias) en los paquetes DBI y dlpyr en R (3)

Al igual que cuando leemos un libro y este libro enlaza a otras historias que ante la curiosidad innata de algunos especímenes de la raza humana tienen, pudiera ser que con las TIs pasé lo mismo.

Digo lo anterior ya que inicié todos estos artículos debido a que queremos transformar los archivos de texto plano a bases de datos relacionales, sin embargo una de esas fuentes modificó la estructura de los archivos y de ahí nació la idea de obtener un diccionario de datos ( o FD como se le llama coloquialmente) y debido a ese reto van hasta ahora 3 artículos (4 con el presente) que tratan de explicar las características de los paquetes dplyr y de sparklyr.

Antes de llegar a la construcción de lo que imagino serán las bases para crear el diccionario de datos seguiré explicando similitudes entre el SQL que todos los informáticos manejamos y el paquete dplyr que la verdad me esta sorprendiendo gratamente y que mis compañeros dominan muy bien.

Agrupar en base a un valor cuantitativo discreto o continuo

En el Instituto a este proceso se le llaman las frecuencias (simples o ponderadas cuando se trata de una encuesta) o bien como se dice en el área las "cardinalidades", es decir si yo tengo la tan famosa y en algunas ocasiones controvertida variables sexo y yo tengo digamos el siguiente conjunto:

sexo_daeras <- c(1,1,1,1,2,1,2,1,2,1,2)

Entonces las frecuencias para este conjunto sería:

1 - 7

2 - 4

Vamos a ver como lo haríamos usando los dos paquetes de los que ya hemos platicado, además que los ordenaremos de forma ascendente y descendente (que pudiera ser una forma también de obtener valores máximos y mínimos) y continuaremos con el archivo de datos abiertos de los puestos de trabajo registrados por los patrones en el IMSS correspondientes al mes de Julio.

Vamos con una variable que contiene salarios, la llamada masa_sal_ta que se describe como masa salarial asociada a trabajadores afiliados.

Código con DBI


Resultado de la consulta(s)


En esta ocasión se corren 2 consultas una con ordenamiento por omisión que es de forma ascendente y otra de forma descendente sobre la variable que creamos y que sería la frecuencia, esta consulta se llevó 7.22 segundos.

Hago un paréntesis y aunque se que los atajos del teclado son herramientas para ser más productivo y eficiente soy de esa gente necia que casi escribe todo, en el siguiente enlace viene la combinación de teclas para imprimir en RStudio el operador pipeline %>%.

Cmd - Shift - M para Mac
Ctrl - Shift - M para Windows.

Código con dplyr.


Resultado de las consultas


En lo personal se me complico hacer la traducción a verbos dplyr ya que como verán aquí no hay tanta correspondencia con SQL quería poner el select por lo que tuve que consultar en internet, y en lugar tener un count() tenemos la expresión n(). Nuevamente realiza la consulta en un tiempo menor que con DBI. Otro aspecto interesante es que si no se pone el arrange la consulta la hace sin ningún tipo de ordenación y para decir que se quiere en orden descendente se aplica la función desc().

Obtener el máximo y mínimo de una variable.

Como lo había mencionado la primer idea para sacar máximos y mínimos de una variable fue por medio de agrupaciones y ordenando de forma ascendente y descendente según sea el caso.

Sin embargo mis compañeros Yoreli y Edgar me mostraron como hacerlo usando dplyr y reflexionado un poco pues tiene mucho que ver con el tema que acabo de relatar.


Código con DBI

Resultado de las consultas


Código con dplyr


Resultado de las consultas


Si pueden observar no pude replicar al 100% la de DBI con dplyr ya que no pude poner un filtro como si se hizo en SQL.

Y bien por ahora aquí dejamos esta entrega.

Miguel Araujo.







Comentarios

Entradas populares de este blog

Librería de REDATAM para R

Conectar bases de datos Oracle con R vía JDBC

Red 7 Admin