Dirígete a la página oficial de la ENIGH 2022: https://www.inegi.org.mx/programas/enigh/nc/2022/#microdatos
Busca el archivo titulado “Características sociodemográficas de los integrantes del hogar (población)” y descárgalo. Si está en formato ZIP, descomprímelo y ubica el archivo .csv.
Guarda este archivo en una carpeta para tu proyecto, por ejemplo, datos/.
# Instala estas librerías si aún no lo has hecho:
# install.packages("readr")
# install.packages("dplyr")
library(readr)
library(dplyr)
library(tidyr)
library(stringr)
head(9 lo que hace es mostrarte las primeras 6 filas de tu tabla de datos)
# Carga tu archivo csv
poblacion <- read_csv("poblacion.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 309684 Columns: 188
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (26): folioviv, numren, madre_id, padre_id, lenguaind, nivel, residenci...
## dbl (129): foliohog, parentesco, sexo, edad, madre_hog, padre_hog, disc_cami...
## lgl (33): otorg_c, forma_c, noatenc_1, noatenc_6, noatenc_7, noatenc_9, noa...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Verifica que la base se cargó correctamente
head(poblacion)
## # A tibble: 6 × 188
## folioviv foliohog numren parentesco sexo edad madre_hog madre_id padre_hog
## <chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 0100005002 1 01 101 2 91 2 <NA> 2
## 2 0100005002 1 02 301 2 48 1 01 2
## 3 0100005002 1 03 609 2 13 1 02 2
## 4 0100005003 1 01 101 1 68 2 <NA> 2
## 5 0100005003 1 02 201 2 64 2 <NA> 2
## 6 0100005004 1 01 101 1 56 2 <NA> 2
## # ℹ 179 more variables: padre_id <chr>, disc_camin <dbl>, disc_ver <dbl>,
## # disc_brazo <dbl>, disc_apren <dbl>, disc_oir <dbl>, disc_vest <dbl>,
## # disc_habla <dbl>, disc_acti <dbl>, cau_camin <dbl>, cau_ver <dbl>,
## # cau_brazo <dbl>, cau_apren <dbl>, cau_oir <dbl>, cau_vest <dbl>,
## # cau_habla <dbl>, cau_acti <dbl>, hablaind <dbl>, lenguaind <chr>,
## # hablaesp <dbl>, comprenind <dbl>, etnia <dbl>, alfabetism <dbl>,
## # asis_esc <dbl>, nivel <chr>, grado <dbl>, tipoesc <dbl>, tiene_b <dbl>, …
# Utiliza las funciones head, tail, str, summary y names y anota frente a su resultado para qué se utiliza cada
head(poblacion) #Nos muestra las priemras 6 filas de la base de datos
tail(poblacion) # Me da laa ultimas 6 observaciones de mi base de datos
str(poblacion) #La estructura de cada una de las variables
summary(poblacion) #Estadísticos generales de las variables numericas y no numericas. Class es el tipo de variable (character = text, factor = para analisis categóricos)
names(poblacion) #Nos mietsra los nombres de todas las columnas
# Utiliza la función anyNA, is.na y anota frente a su resultado para qué se utiliza cada una
anyNA(poblacion) # ver si hay algun Na en la tabla
is.na(poblacion) # Ve si esxiste un valor NA en cuaquier celda
sum(is.na(poblacion)) #suma todos los NA's del dataframe
colSums(is.na(poblacion)) #se analiza cada columna, por cada una de las columnas hace una suma del numero de NA's
max(colSums(is.na(poblacion))) # Te dice que columna tiene más NA's
#Crea un nuevo data frame que se llame poblacion_nl a partir del data frame original llamado poblacion
# Este es el operador de dyplyr %>% (xmd + shift + m = %>%)
#Filtra los datos solamente para personas que vivan en el estado de Nuevo León
poblacion_nl <- poblacion%>%
filter(entidad == "19") %>%
select(sexo, edad, disc_camin, hablaind, alfabetism)
#FILTRAR filtra filas, SELECCIONAR filtra columnas
#La variable que vamos a filtrar, entonces la funcion es --> filter(), y vamos a filtrar por entidad (adentro del parrentesis )
#Selecciona por lo menos 5 variables de interés para tu análisis
#Calcula el promedio de edad por sexo para el estado de Jalisco
poblacion_j <- poblacion%>%
filter(entidad == "14") %>%
select(edad, sexo)
poblacion_jhombres <- poblacion %>%
filter(entidad == "14") %>%
select(edad, sexo, ) %>%
filter(sexo==1)
mean(poblacion_jhombres$edad) #El signo de pesos lo usamos para decir especificamente de que columna queremos hacer el análisis
## [1] 32.86837
poblacion_jmujeres <- poblacion %>%
filter(entidad == "14") %>%
select(edad, sexo, ) %>%
filter(sexo==2)
mean(poblacion_jmujeres$edad)
## [1] 34.35508
poblacion_j <- poblacion%>%
filter(entidad == "14") %>%
select(edad, sexo) %>%
group_by(sexo) %>%
summarise(prom_edad = mean(edad)) #summarise crea una variable nueva, en este caso la variable nueva es el promedio
#Para imprimir el resultado en la consola solo ponemos el nombre de la variable, en este caso poblacion_j
# Revisar estructura general
summary(poblacion_j)
# Renombrar columnas clave con nombres más legibles
#rename
pob_nueva<-poblacion %>%
rename(
años_imss = ss_aa,
disc_audi = cau_oir
)
# Re-codificar variable de sexo
#mutate y case_when
poblacion_j<-poblacion_j%>%
mutate(sexo=case_when(
sexo == 1 ~ "Hombre",
sexo == 2 ~ "Mujer"
))
# Crear una variable binaria para tercera edad
#ifelse
poblacion_jhombres<-poblacion_jhombres%>%
mutate(tercera_edad=ifelse(edad>=60, "Tercera edad","Menor de 60 años"))
# Identificar variables con muchos NA
#colSums y is.na
colSums(is.na(poblacion_jhombres)) #Esto nos indica que no hay NA's
## edad sexo tercera_edad
## 0 0 0
# Eliminar filas donde falta la edad
#filter e is.na
pob_nueva<-pob_nueva%>%
filter(is.na(disc_brazo))
# Confirmar que ya no hay NA en edad
#anyNA
Filtra personas de entre 18 y 25 años. (UTILIZAR FILTER) LISTO
Crea una nueva variable llamada joven (1 si tiene 18–20 años, 0 si no).LISTO
Crear una variable que se llame nivel_educativo LISTO
Elimina NA en nivel_educativo.
Seleccionar solo las variables edad, joven, nivel_educativo, sexo LISTOOOO
Crear un resumen con la función summarize donde digas la cantidad de personas de cada sexo por edad (de los que tienen 18, cuantas mujeres y cuantos hombres hay, de los ue tienen 19, cuantos hombres y cuantas mujeres hay, etc.)
summary(poblacion)
#Crea un nuevo data frame que se llama poblacion_edad para filtrar de poblacion personas entre 18 y 25 años.
poblacion_edad <- poblacion%>%
filter(edad > 17) %>%
filter(edad < 26)
#Crear una variable llamada joven (1 si tiene 18-20 años, 0 si no)
poblacion_edad<-poblacion_edad%>%
mutate(joven=ifelse(edad>17 & edad < 21, "1","0"))
#Crea una variable que se llame nivel educativo
poblacion_edad<-poblacion_edad%>%
mutate(nivel_educativo=ifelse(nivel == "12", "Profesional", "Otro"))
#Seleccionar solo las variables edad, joven, nivel_educativo, sexo
poblacion_edad <- poblacion_edad%>%
select(edad, joven, nivel_educativo, sexo)
#Elimina NA en nivel educativo
poblacion_edad <- poblacion_edad %>%
filter(!is.na(nivel_educativo)) #El signo de excalamción significa NOT, de manera que NOT (no) enseña los NA's
#Crear un resumen con summarize donde digas la cantidad de personas de cada sexo por edad (de los que tienen 18, cuantas mujeres y cuantos hombres hay, de los ue tienen 19, cuantos hombres y cuantas mujeres hay, etc.)
pob_edad_por_sexo <- poblacion_edad%>%
group_by(edad, sexo) %>%
summarise(numero_de_personas =n(), .groups = "drop_last") #R me dijo que le agregara drop last .groups para silenciar el mesnaje que me daba de que si habia ejecutado el comando.
## 14. Cierre
``` r
# Guardar como CSV o Excel
#write_csv
#write_xlsx