1 Población Económicamente Activa

1.1 Descripción

En esta práctica se utilizará el lenguaje de programación R para procesar información estadística del Censo de Población y Vivienda 2020 del INEGI, correspondiente a la Población Económicamente Activa (PEA) por municipio del Estado de México. A partir de la base original en formato Excel, se seleccionará y limpiará la información necesaria para generar un archivo en formato .csv, el cual podrá ser unido posteriormente en QGIS con la capa geográfica municipal del Estado de México.


2 Preparar el ambiente de trabajo

2.1 Limpiar el entorno

# Borra todos los objetos del entorno
rm(list = ls())
# Libera memoria
gc()
##           used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
## Ncells  623312 33.3    1423067   76         NA   715648 38.3
## Vcells 1177048  9.0    8388608   64      16384  2010390 15.4
# Muestra en qué carpeta estás trabajando
getwd()
## [1] "/Users/brandonsaidbeltran/Library/Mobile Documents/com~apple~CloudDocs/DESK2025SAID/CLASES 20262/LABORATORIO 8/practica6"
#Ubicar carpeta en la pestaña de Session > Set working > Choose

3 Instalar y cargar paqueterías

3.1 Instalar paqueterías

install.packages(c("readxl", "dplyr", "stringr", "readr", "janitor"))

3.2 Cargar paqueterías

library(readxl)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(stringr)
library(readr)
library(janitor)
## 
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test

4 Cargar archivo excel INEGI

4.1 cargar excel

archivo_excel <- "cpv2020_b_mex_08_caracteristicas_economicas.xlsx"
archivo_excel
## [1] "cpv2020_b_mex_08_caracteristicas_economicas.xlsx"
excel_sheets(archivo_excel)
## [1] "Índice" "01"     "02"     "03"     "04"     "05"     "06"

4.2 Leer hoja 02 del archivo

pea_raw <- read_excel(
  path = archivo_excel,
  sheet = "02",
  skip = 6,
  col_names = FALSE
)
## New names:
## • `` -> `...1`
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
pea_raw
## # A tibble: 6,431 × 11
##    ...1      ...2  ...3  ...4           ...5 ...6  ...7  ...8  ...9  ...10 ...11
##    <chr>     <chr> <chr> <chr>         <dbl> <chr> <chr> <chr> <chr> <chr> <dbl>
##  1 <NA>      <NA>  <NA>  <NA>             NA Pobl… <NA>  <NA>  Pobl… No e…  NA  
##  2 <NA>      <NA>  <NA>  <NA>             NA Total Ocup… Deso… <NA>  <NA>   NA  
##  3 <NA>      <NA>  <NA>  <NA>             NA <NA>  <NA>  <NA>  <NA>  <NA>   NA  
##  4 15 México Total Total Total      13742847 8544… 8364… 1801… 5162… 35915  62.2
##  5 15 México Total Total 12-14 años   880723 88991 87770 1221  7906… 1061   10.1
##  6 15 México Total Total 15-19 años  1476665 4486… 4278… 20816 1025… 2243   30.4
##  7 15 México Total Total 20-24 años  1415159 8930… 8570… 36037 5193… 2737   63.1
##  8 15 México Total Total 25-29 años  1367527 1067… 1038… 28693 2976… 2826   78.0
##  9 15 México Total Total 30-34 años  1283264 1034… 1014… 19195 2464… 2679   80.6
## 10 15 México Total Total 35-39 años  1254296 1021… 1006… 15247 2299… 2884   81.4
## # ℹ 6,421 more rows
dim(pea_raw)
## [1] 6431   11
str(pea_raw)
## tibble [6,431 × 11] (S3: tbl_df/tbl/data.frame)
##  $ ...1 : chr [1:6431] NA NA NA "15 México" ...
##  $ ...2 : chr [1:6431] NA NA NA "Total" ...
##  $ ...3 : chr [1:6431] NA NA NA "Total" ...
##  $ ...4 : chr [1:6431] NA NA NA "Total" ...
##  $ ...5 : num [1:6431] NA NA NA 13742847 880723 ...
##  $ ...6 : chr [1:6431] "Población económicamente activa" "Total" NA "8544416" ...
##  $ ...7 : chr [1:6431] NA "Ocupada" NA "8364273" ...
##  $ ...8 : chr [1:6431] NA "Desocupada" NA "180143" ...
##  $ ...9 : chr [1:6431] "Población no económicamente activa" NA NA "5162516" ...
##  $ ...10: chr [1:6431] "No especificado" NA NA "35915" ...
##  $ ...11: num [1:6431] NA NA NA 62.2 10.1 ...
head(pea_raw, 20)
## # A tibble: 20 × 11
##    ...1      ...2  ...3  ...4           ...5 ...6  ...7  ...8  ...9  ...10 ...11
##    <chr>     <chr> <chr> <chr>         <dbl> <chr> <chr> <chr> <chr> <chr> <dbl>
##  1 <NA>      <NA>  <NA>  <NA>        NA      Pobl… <NA>  <NA>  Pobl… No e…  NA  
##  2 <NA>      <NA>  <NA>  <NA>        NA      Total Ocup… Deso… <NA>  <NA>   NA  
##  3 <NA>      <NA>  <NA>  <NA>        NA      <NA>  <NA>  <NA>  <NA>  <NA>   NA  
##  4 15 México Total Total Total        1.37e7 8544… 8364… 1801… 5162… 35915  62.2
##  5 15 México Total Total 12-14 años   8.81e5 88991 87770 1221  7906… 1061   10.1
##  6 15 México Total Total 15-19 años   1.48e6 4486… 4278… 20816 1025… 2243   30.4
##  7 15 México Total Total 20-24 años   1.42e6 8930… 8570… 36037 5193… 2737   63.1
##  8 15 México Total Total 25-29 años   1.37e6 1067… 1038… 28693 2976… 2826   78.0
##  9 15 México Total Total 30-34 años   1.28e6 1034… 1014… 19195 2464… 2679   80.6
## 10 15 México Total Total 35-39 años   1.25e6 1021… 1006… 15247 2299… 2884   81.4
## 11 15 México Total Total 40-44 años   1.20e6 9685… 9546… 13887 2258… 2659   80.9
## 12 15 México Total Total 45-49 años   1.15e6 9144… 9016… 12791 2287… 2650   79.8
## 13 15 México Total Total 50-54 años   1.01e6 7691… 7577… 11455 2353… 2510   76.4
## 14 15 México Total Total 55-59 años   7.96e5 5553… 5460… 9368  2378… 2464   69.8
## 15 15 México Total Total 60-64 años   6.61e5 3695… 3636… 5833  2891… 2471   55.9
## 16 15 México Total Total 65-69 años   4.75e5 2131… 2097… 3322  2600… 2186   44.8
## 17 15 México Total Total 70-74 años   3.31e5 1110… 1096… 1418  2178… 2016   33.6
## 18 15 México Total Total 75-79 años   2.13e5 55852 55272 580   1550… 1695   26.3
## 19 15 México Total Total 80-84 años   1.30e5 22461 22266 195   1066… 1403   17.2
## 20 15 México Total Total 85 años y …  1.09e5 11428 11343 85    96150 1431   10.5

5 Limpiar la base de datos

5.1 Eliminar filas vacías

pea_limpia <- pea_raw %>%
  remove_empty(which = "rows")

head(pea_limpia, 20)
## # A tibble: 20 × 11
##    ...1      ...2  ...3    ...4         ...5 ...6  ...7  ...8  ...9  ...10 ...11
##    <chr>     <chr> <chr>   <chr>       <dbl> <chr> <chr> <chr> <chr> <chr> <dbl>
##  1 <NA>      <NA>  <NA>    <NA>      NA      Pobl… <NA>  <NA>  Pobl… No e…  NA  
##  2 <NA>      <NA>  <NA>    <NA>      NA      Total Ocup… Deso… <NA>  <NA>   NA  
##  3 15 México Total Total   Total      1.37e7 8544… 8364… 1801… 5162… 35915  62.2
##  4 15 México Total Total   12-14 añ…  8.81e5 88991 87770 1221  7906… 1061   10.1
##  5 15 México Total Total   15-19 añ…  1.48e6 4486… 4278… 20816 1025… 2243   30.4
##  6 15 México Total Total   20-24 añ…  1.42e6 8930… 8570… 36037 5193… 2737   63.1
##  7 15 México Total Total   25-29 añ…  1.37e6 1067… 1038… 28693 2976… 2826   78.0
##  8 15 México Total Total   30-34 añ…  1.28e6 1034… 1014… 19195 2464… 2679   80.6
##  9 15 México Total Total   35-39 añ…  1.25e6 1021… 1006… 15247 2299… 2884   81.4
## 10 15 México Total Total   40-44 añ…  1.20e6 9685… 9546… 13887 2258… 2659   80.9
## 11 15 México Total Total   45-49 añ…  1.15e6 9144… 9016… 12791 2287… 2650   79.8
## 12 15 México Total Total   50-54 añ…  1.01e6 7691… 7577… 11455 2353… 2510   76.4
## 13 15 México Total Total   55-59 añ…  7.96e5 5553… 5460… 9368  2378… 2464   69.8
## 14 15 México Total Total   60-64 añ…  6.61e5 3695… 3636… 5833  2891… 2471   55.9
## 15 15 México Total Total   65-69 añ…  4.75e5 2131… 2097… 3322  2600… 2186   44.8
## 16 15 México Total Total   70-74 añ…  3.31e5 1110… 1096… 1418  2178… 2016   33.6
## 17 15 México Total Total   75-79 añ…  2.13e5 55852 55272 580   1550… 1695   26.3
## 18 15 México Total Total   80-84 añ…  1.30e5 22461 22266 195   1066… 1403   17.2
## 19 15 México Total Total   85 años …  1.09e5 11428 11343 85    96150 1431   10.5
## 20 15 México Total Hombres Total      6.61e6 4994… 4868… 1260… 1591… 19239  75.6
dim(pea_limpia)
## [1] 6429   11

5.2 Renombrar columnas principales

names(pea_limpia)[1:11] <- c(
  "entidad",
  "municipio",
  "sexo",
  "grupo_edad",
  "pob_12ymas",
  "pea_total",
  "ocupada",
  "desocupada",
  "pnea",
  "no_especificado",
  "tasa_participacion"
)

names(pea_limpia)
##  [1] "entidad"            "municipio"          "sexo"              
##  [4] "grupo_edad"         "pob_12ymas"         "pea_total"         
##  [7] "ocupada"            "desocupada"         "pnea"              
## [10] "no_especificado"    "tasa_participacion"

5.3 Revisar base renombrada

head(pea_limpia, 20)
## # A tibble: 20 × 11
##    entidad   municipio sexo   grupo_edad pob_12ymas pea_total ocupada desocupada
##    <chr>     <chr>     <chr>  <chr>           <dbl> <chr>     <chr>   <chr>     
##  1 <NA>      <NA>      <NA>   <NA>               NA Població… <NA>    <NA>      
##  2 <NA>      <NA>      <NA>   <NA>               NA Total     Ocupada Desocupada
##  3 15 México Total     Total  Total        13742847 8544416   8364273 180143    
##  4 15 México Total     Total  12-14 años     880723 88991     87770   1221      
##  5 15 México Total     Total  15-19 años    1476665 448638    427822  20816     
##  6 15 México Total     Total  20-24 años    1415159 893066    857029  36037     
##  7 15 México Total     Total  25-29 años    1367527 1067049   1038356 28693     
##  8 15 México Total     Total  30-34 años    1283264 1034158   1014963 19195     
##  9 15 México Total     Total  35-39 años    1254296 1021461   1006214 15247     
## 10 15 México Total     Total  40-44 años    1197089 968548    954661  13887     
## 11 15 México Total     Total  45-49 años    1145882 914472    901681  12791     
## 12 15 México Total     Total  50-54 años    1007077 769196    757741  11455     
## 13 15 México Total     Total  55-59 años     795711 555391    546023  9368      
## 14 15 México Total     Total  60-64 años     661100 369527    363694  5833      
## 15 15 México Total     Total  65-69 años     475398 213114    209792  3322      
## 16 15 México Total     Total  70-74 años     330905 111064    109646  1418      
## 17 15 México Total     Total  75-79 años     212562 55852     55272   580       
## 18 15 México Total     Total  80-84 años     130480 22461     22266   195       
## 19 15 México Total     Total  85 años y…     109009 11428     11343   85        
## 20 15 México Total     Hombr… Total         6605364 4994614   4868571 126043    
## # ℹ 3 more variables: pnea <chr>, no_especificado <chr>,
## #   tasa_participacion <dbl>
str(pea_limpia)
## tibble [6,429 × 11] (S3: tbl_df/tbl/data.frame)
##  $ entidad           : chr [1:6429] NA NA "15 México" "15 México" ...
##  $ municipio         : chr [1:6429] NA NA "Total" "Total" ...
##  $ sexo              : chr [1:6429] NA NA "Total" "Total" ...
##  $ grupo_edad        : chr [1:6429] NA NA "Total" "12-14 años" ...
##  $ pob_12ymas        : num [1:6429] NA NA 13742847 880723 1476665 ...
##  $ pea_total         : chr [1:6429] "Población económicamente activa" "Total" "8544416" "88991" ...
##  $ ocupada           : chr [1:6429] NA "Ocupada" "8364273" "87770" ...
##  $ desocupada        : chr [1:6429] NA "Desocupada" "180143" "1221" ...
##  $ pnea              : chr [1:6429] "Población no económicamente activa" NA "5162516" "790671" ...
##  $ no_especificado   : chr [1:6429] "No especificado" NA "35915" "1061" ...
##  $ tasa_participacion: num [1:6429] NA NA 62.2 10.1 30.4 ...

6 Seleccionar variables de interés

6.1 Filtrar municipios y PEA total

pea_edomex <- pea_limpia %>%
  filter(
    municipio != "Total",
    sexo == "Total",
    grupo_edad == "Total"
  ) %>%
  select(
    municipio,
    pea_total
  )

head(pea_edomex,20)
## # A tibble: 20 × 2
##    municipio                     pea_total
##    <chr>                         <chr>    
##  1 001 Acambay de Ruíz Castañeda 35834    
##  2 002 Acolman                   86655    
##  3 003 Aculco                    26010    
##  4 004 Almoloya de Alquisiras    7196     
##  5 005 Almoloya de Juárez        81444    
##  6 006 Almoloya del Río          6535     
##  7 007 Amanalco                  10106    
##  8 008 Amatepec                  10692    
##  9 009 Amecameca                 25321    
## 10 010 Apaxco                    15512    
## 11 011 Atenco                    36696    
## 12 012 Atizapán                  6511     
## 13 013 Atizapán de Zaragoza      272478   
## 14 014 Atlacomulco               56126    
## 15 015 Atlautla                  15328    
## 16 016 Axapusco                  13375    
## 17 017 Ayapango                  4521     
## 18 018 Calimaya                  33184    
## 19 019 Capulhuac                 19533    
## 20 025 Chalco                    193295

6.2 Limpiar nombres de municipios

pea_edomex <- pea_edomex %>%
  mutate(
    municipio = str_remove(municipio,"^[0-9]{3} "),
    municipio = str_trim(municipio),
    pea_total = as.numeric(pea_total)
  )

head(pea_edomex,20)
## # A tibble: 20 × 2
##    municipio                 pea_total
##    <chr>                         <dbl>
##  1 Acambay de Ruíz Castañeda     35834
##  2 Acolman                       86655
##  3 Aculco                        26010
##  4 Almoloya de Alquisiras         7196
##  5 Almoloya de Juárez            81444
##  6 Almoloya del Río               6535
##  7 Amanalco                      10106
##  8 Amatepec                      10692
##  9 Amecameca                     25321
## 10 Apaxco                        15512
## 11 Atenco                        36696
## 12 Atizapán                       6511
## 13 Atizapán de Zaragoza         272478
## 14 Atlacomulco                   56126
## 15 Atlautla                      15328
## 16 Axapusco                      13375
## 17 Ayapango                       4521
## 18 Calimaya                      33184
## 19 Capulhuac                     19533
## 20 Chalco                       193295

6.3 Revisar estructura final

str(pea_edomex)
## tibble [125 × 2] (S3: tbl_df/tbl/data.frame)
##  $ municipio: chr [1:125] "Acambay de Ruíz Castañeda" "Acolman" "Aculco" "Almoloya de Alquisiras" ...
##  $ pea_total: num [1:125] 35834 86655 26010 7196 81444 ...
summary(pea_edomex)
##   municipio           pea_total     
##  Length:125         Min.   :  1315  
##  Class :character   1st Qu.: 10301  
##  Mode  :character   Median : 21493  
##                     Mean   : 68355  
##                     3rd Qu.: 52690  
##                     Max.   :839729
head(pea_edomex, 20)
## # A tibble: 20 × 2
##    municipio                 pea_total
##    <chr>                         <dbl>
##  1 Acambay de Ruíz Castañeda     35834
##  2 Acolman                       86655
##  3 Aculco                        26010
##  4 Almoloya de Alquisiras         7196
##  5 Almoloya de Juárez            81444
##  6 Almoloya del Río               6535
##  7 Amanalco                      10106
##  8 Amatepec                      10692
##  9 Amecameca                     25321
## 10 Apaxco                        15512
## 11 Atenco                        36696
## 12 Atizapán                       6511
## 13 Atizapán de Zaragoza         272478
## 14 Atlacomulco                   56126
## 15 Atlautla                      15328
## 16 Axapusco                      13375
## 17 Ayapango                       4521
## 18 Calimaya                      33184
## 19 Capulhuac                     19533
## 20 Chalco                       193295

7 Exportar base para QGIS

7.1 Guardar archivo CSV

write_csv(pea_edomex, "EDOMEXPEA.csv")

list.files()
## [1] "cpv2020_b_mex_08_caracteristicas_economicas.xlsx"
## [2] "EDOMEXPEA.csv"                                   
## [3] "logoUNAM.png"                                    
## [4] "practica6R"                                      
## [5] "rosm.cache"                                      
## [6] "union_datosQGIS.html"                            
## [7] "union_datosQGIS.Rmd"