Más de dplyr y una librería nueva: sqldf
En el Instituto es muy común los requerimientos especiales; cuando a veces la sección de consulta interactiva no nos puede dar algunas respuestas muy especificas a dichos requerimientos. Lo que sigue es descargar los datos abiertos y procesarlos con algún software estadístico o lenguaje de programación.
En los últimos años como se ha mencionado en los anteriores artículos se ha masificado y popularizado el uso del lenguaje de programación R por lo que al tener un enfoque fuertemente orientado a la estadística resulta fácil atender este tipo de requerimientos.
Vamos a ejemplificar con una consulta de la Encuesta Nacional sobre Uso del Tiempo (ENUT). La pregunta es la siguiente:
Número de personas de 15 a 24 años que abandonaron la escuela por razón de que se unió, casó o embarazó.
Para ello tenemos que descargar los microdatos de la página del Instituto e iniciar a escribir instrucciones para dar respuesta a los requerimientos.
Otros documentos necesarios para realizar la consulta es el diccionario de datos y el cuestionario para identificar las columnas relacionadas con las preguntas así como el flujo de las mismas.
Cuestionario:
https://www.inegi.org.mx/contenidos/programas/enut/2019/doc/enut_2019_cuestionario.pdf
Diccionario de datos (Descriptor de archivos):
https://www.inegi.org.mx/programas/enut/2019/#microdatos
Hemos identificado que las preguntas relacionados están en la sección que le hemos llamado como sociodemográfico.
Sección del cuestionario:
Sección del archivo del descriptor de archivo:
Debido a estos dos documentos nos damos cuenta que el nombre de las columnas son P3_9 para asistencia escolar y P3_10 para razón principal por la que no asiste a la escuela.
Si la variable P3_9 tiene un valor de 2 (no asiste a la escuela) y la variable P3_10 tiene valores 4 o 5 (razón por la cual no asiste a la escuela, se unió o se casó o se embarazó) estos son los casos que queremos contar o analizar. También es importante tomar en cuenta la columna EDAD.
Ahora en el Instituto se ha dejado de lado los formatos XBase (Dbf) y ahora lo que se publica en la página oficial son formatos de texto del tipo CSV (Valores separados por coma por sus siglas en inglés) para revisar el contenido de estos archivos que generalmente el sistema operativo los abre con MS Excel, podemos seleccionar el archivo y con el botón secundario del ratón elegimos abrirlo con un editor de texto (se puede con el NotePad o Bloc de Notas de Windows ya que no es archivo demasiado grande) aquí podemos observar el contenido completo del archivo que se ha descargado.
En posts pasados se ha publicado las equivalencias entre los consultas hechas con dplyr y código SQL (según la librería que se trate) ahora vamos a abordar ambos temas para resolver este requerimiento.
En una rápida investigación cuando un archivo de tipo CSV es asignado a un data frame debido a que como mencionamos al principio aplica ya que es un archivo de mediano tamaño, para el uso de SQL instalamos la librería sqldf y si es el caso se debe instalar también dplyr.
Así mismo en los pasados posts se habló de la librería DBI que se utiliza para trabajar con conexiones de base de datos o bien con Apache Spark.
Para resolver el requerimiento y atender rápido se usó el software el Microsoft Visual FoxPro pero debido al uso generalizado que se da de la librería dplyr se busco resolver ya con toda la subdirección este mismo requerimiento.
Entonces vamos a explicar el código paso por paso.
library(dplyr)
library(sqldf)
Como se menciona tenemos que mandar llamar las 2 librerías, antes se tienen que instalar.
setwd("Unidad:/Ruta")
cdTsDem <- read.csv("TSDEM.csv")
Ahora necesitamos verificar la pregunta P3_10 para dar respuesta por completo a la petición del usuario.
PNAE_x_UnEmb <- cdTsDem %>% filter(P3_9=="2" & (P3_10=='4' | P3_10=='5') & (as.numeric(EDAD)>=15 & as.numeric(EDAD)<=24)) %>% summarise(tot = sum(FAC_HOG, na.rm = TRUE))
PNAE_x_UnEmb2 <- sqldf("select sum(FAC_HOG) from cdTsDem where P3_9='2' and (P3_10='4' or P3_10='5') and (EDAD>=15 and EDAD<=24)")
Comentarios
Publicar un comentario