Ir al contenido principal

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

En este artículo abrimos un paréntesis para seguir haciendo esa analogía entre instrucciones dplyr y SQL (DBI) para tener un mejor conocimiento entre ambas sintaxis aunque pareciera que las instrucciones dlpyr se traducen en SQL como lo menciona el libro de "Mastering Spark with R" - "Los datos no son importados a R; en cambio, dplyr convierte esta tarea en instrucciones SQL que son enviadas a Spark" y en una sección previa del libro dice "...si eres competente (proeficiente) en SQL, esta opción es viable para ti".

Sin embargo, reitero es importante que cuando un grupo de trabajo maneja esta sintaxis es bueno como personal y profesional de TI tener los conocimientos necesarios para dar soporte y porque no usar dichos verbos de este paquete.

Vamos a regresar nuevamente a los datos abiertos del Instituto Mexicano del Seguro Social (IMSS) para extraer los puestos de trabajo que los patrones registran ante el Instituto correspondientes a julio y que se pueden descargar de este enlace.

Agrupar valores y aplicar una función (máximo, mínimo, promedio, suma, etc.)

Según la documentación existente en el sitio de datos abiertos del IMSS tenemos la columnas Sexo - sexo y la columna de Puestos de trabajo afiliados al IMSS (empleos asegurados o asegurados asociados a un empleo) - ta.

Vamos a agrupar los puestos de trabajo (ta) por Sexo (sexo). El universo de este archivo es de 4,884,288 de registros.

Código con DBI


Resultado de la consulta


La consulta se realizó en un tiempo de 1.63 segundos y como se puede observar es una consulta normal con SQL y se dice cual es la conexión que se va a usar para la misma. Como paréntesis este dato sobre empleo formal es muy alentador pues ni siquiera en los años previos de la pandemia se habían registrado tantos puestos de trabajo 21,079,434.

Código con dplyr


Resultado de la consulta


Una de las cosas por lo que la gente prefiere usar dplyr es la sencillez del código como se puede observar en este ejemplo, el tiempo que se llevó la consulta fue de 1.47 segundos que de hecho es menor que la primera opción que es con código SQL mediante la función dbGetQuery().

Agrupar 2 valores y aplicar una función ( sum ) además de ordenar los datos.

Ahora vamos con una consulta agrupada por dos columnas: entidad federativa (cve_entidad) y sexo (sexo) sumando la misma variable que son el número de puestos de trabajo (ta) además tenemos que ordenar según la entidad federativa.

Código DBI


Resultado de la consulta.


Aquí tenemos una consulta por entidad y por sexo de los puestos de trabajo existentes ordenados por las mismas columnas por las que son agrupadas, lo anterior llevó 1.85 segundos.

Código dplyr


Resultado de la consulta.


El tiempo que se llevó esta consulta fueron 1.69 segundos, me encontré que la consola mandaba el siguiente mensaje:

> puestosporsexo <- ptjulio2022 %>% group_by(cve_entidad, sexo) %>% summarise(totptjulio2022 = sum(ta)) %>%
+                   arrange(cve_entidad, sexo)
`summarise()` has grouped output by 'cve_entidad'. You can override using the `.groups` argument.
> puestosporsexo
`summarise()` has grouped output by 'cve_entidad'. You can override using the `.groups` argument.
`summarise()` has grouped output by 'cve_entidad'. You can override using the `.groups` argument.
`summarise()` has grouped output by 'cve_entidad'. You can override using the `.groups` argument.

Los mensajes de advertencia, información o error muchas veces desconciertan a los usuarios por lo que busqué en la web como se pudiera eliminar y encontré la solución en esta liga que nos sugiere poner la instrucción:

options(dplyr.summarise.inform = FALSE)

Reconozco que según la literatura se podría deducir que como dplyr es un traductor que convierte sus verbos en instrucciones de SQL sería más lento, pero no es así, por lo que es muy interesante seguir investigando y probando las similitudes entre los dos paquetes.

Para no saturarnos de información lo dejamos aquí y continuamos en un nuevo artículo (entrada para blogger) más adelante.

Hasta el siguiente post.

Miguel Araujo


Comentarios

Entradas populares de este blog

Posit Cloud - como instalar librerías de Python en el entorno de R

 Ahora que estamos tomando una maestría buscando que siga "girando la ardilla" por unos años más en la materia de "Cómputo Estadístico" nos ha sugerido usar la versión gratuita de Posit en la nube. En su página definen este producto como "es una solución basada en la nube que permite acceder al poderoso conjunto de herramientas de ciencia de datos de Posit directamente en el navegador web  - sin requerir instalación o configuraciones complejas". Para los usuarios que han utilizado Posit RStudio en primera instancia verán el entorno muy similar a Posit Cloud con algunas pequeñas diferencias, para empezar necesitamos un usuario o contraseña aunque es posible autenticarse usando alguna cuenta existente como es el caso de Google. Con el tiempo y trabajando en desarrollo de software, vamos entendiendo que quizás el nombre queda muy grande a los pequeños ejemplos, pero es muy recomendable el uso de proyectos siempre. A continuación vemos el entorno Posit Clo...

La librería openxlsx

En el Instituto se utiliza como herramienta de trabajo institucional la suite de ofimática MS Office que ofrece un precio asequible aunque lo actual en el mundo del software es el esquema de suscripciones el que casi se ha convertido en el común de las empresas gigantes de las tecnologías de la información. Es por ello que si bien en un principio que se usaban las bibliotecas XLConnectJars   y XLConnect, al tratar de bajarlas e instalarlas se descubrió - en aquel entonces - que estaban obsoletas. Es por ello que se volteo a la que revisaremos superficialmente en este artículo. Lo primero como siempre es descargar la librería openxlsx que se puede hacer desde el mismo Posit RStudio. Vamos a recrear un cuadro existente en el sitio del Instituto que debido a la crisis sanitaria iniciada en 2020 cobra una relevancia muy importante: "Las principales causas de muerte" que de forma anecdótica   fue la primera aplicación en la cual me pidieron que participara, un programa escri...

R 4.5 vs R 4.4.3

Cuando comparto con mis colegas, sobre todo de trabajo que es mi nicho profesional, acerca de porque tener las últimas versiones del software y que replico sobre todo por dos vertientes: mejor desempeño y funcionalidad del software, y la seguridad que pareciera que las empresas de software recomiendan los mismo o algo cercano a esto. Por ejemplo, veamos lo que nos dice Oracle (dueño de Java) acerca de su versión 8 del Java SE.   En la tabla de la página de Oracle podemos observar las fechas en los cuales ya no habrá soporte para ciertas versiones de Java. En este breve artículo veremos en el caso del interprete de R como se desempeña en una versión con respecto a la más reciente. Los puestos de trabajo que se registran por los patrones en el IMSS ha sido una cifra que muestra el avance o retroceso de como se encuentra el empleo en nuestro país, en este caso diremos que en el sector formal. Los microdatos oscilan arriba de los 20 millones y para su procesamiento es necesario o divi...