Ir al contenido principal

Los conteos de registros con dplyr con condiciones

Seguimos con esta serie de artículos que tiene el propósito de apoyar a personas que como yo inician en el mundo de R y de alguna manera a la ciencia de datos, así como para mi es una especie de cuaderno de notas digital.

El archivo con el que ejemplificó está en el sitio de INEGI y es la información de registros administrativos referentes a la estadística de mortalidad, en este caso específico para el año 2019.

Una gran amiga doctora, me consultó sobre como obtener causas de muerte de menores de edad con estos datos.

Una vez que descargamos el archivo lo que tenemos que hacer es crear el código en R para abrir este archivo en formato CSV usando Spark.

Para lo cual usamos las siguientes instrucciones:

library(sparklyr)

library(dplyr)


config <- spark_config()

config$`sparklyr.shell.driver-memory` <- "16G"

config$spark.memory.fractions <- 0.7

sc <- spark_connect(master="local", config = config)

defun19 <- spark_read_csv(sc, name = "defun19",                                      path="D:/EjemplosR/defun19/conjunto_de_datos_defunciones_registradas_2019.CSV",                        delimiter=",", header = TRUE, overwrite = TRUE)


Esta nueva forma para configurar la conexión de Spark es para utilizar mejorar el uso de la memoria RAM [1], después se crea una conexión y se realiza una conexión con el archivo csv.

Cuando creía que las consultas con el paquete dplyr en R, las podía realizar usando de alguna manera haciendo similitudes con SQL y de acuerdo a lo que escribí en un artículo anterior, si para que me devuelva el número de filas/registros se resolvía con esta instrucción:

nrows <- defun19 %>% summarise(n())

Lo  lógico era agregarle una condición con filter.

nrows2 <- defun19 %>% summarise(n()) %>% filter(lista_mex=="33B" |  lista_mex=="33C")

Sin embargo al consultar la variable me marcó lo siguiente:



Entonces espere pacientemente a que mis compañeros me mostraran un ejemplo, y pues nuevamente lo uso sin filter para ver que funcionaba, a continuación las defunciones registradas en 2019.

nrows <- defun19 %>% sdf_nrow()

nrows2 <- defun19 %>% tally()

Encontré la verdad información muy escueta y en inglés sobre sdf_nrow (parece que es de Spark)[2] y tally() [3] que también parece ser nativo de R, pero funcionó y ambas de forma rápida.

Vamos con algo especifico; mi amiga es pediatra con especialidad en nefrología por lo que vamos a filtrar las defunciones del grupo de la lista mexicana 38 que es "enfermedades del sistema urinario" y menores de 18 años, por ahora queremos absolutos.

Los códigos de la lista mexicana se puede descargar aquí.

##Enfermedades del sistema urinario en menores de 18 años

renales <- defun19 %>% filter(trim(gr_lismex)=="38" & edad<4018) %>% sdf_nrow()

Si ahora queremos que esos mismos casos que ahora se reflejan como el total del grupo 38 y los menores de 18, ahora de ese total que se desglose por causa, que en nuestro viejo conocido SQL sería un group by y aquí en Spark sería lo mismo.

renalesxcausa <- defun19 %>% group_by(lista_mex) %>% filter(trim(gr_lismex)=="38" & edad<4018) %>% tally()

En esta instrucción que ya es un agrupamiento, se usa tally() ya que si dejamos sdf_nrow() solo imprime el total del grupo.

A continuación comparto el código completo para este ejercicio.


Corrida del script de R.


Por ahora es todo en lo referente a este tema de los tantos que abarca este lenguaje de programación.

Hasta la vista.

Miguel Araujo.

[1] Sparklyr from RStudio https://spark.rstudio.com/guides/connections/

[2] Sparklyr from RStudio https://spark.rstudio.com/reference/

[3] RDocumentation https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/tally#:~:text=tally()%20is%20a%20convenient,before%20and%20ungroup()%20after.



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...