1 Población Económicamente Activa

1.1 Descripción

En esta práctica se utilizará el lenguaje de programación R para replicar la información estadística del Censo de Población y Vivienda 2020 del INEGI, correspondiente a la Población Económicamente Activa (PEA) por alcaldía de la Ciudad 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    1423064   76         NA   715654 38.3
## Vcells 1176976  9.0    8388608   64      16384  2010329 15.4
# Muestra en qué carpeta estás trabajando
getwd()
## [1] "/Users/brandonsaidbeltran/Library/Mobile Documents/com~apple~CloudDocs/DESK2025SAID/CLASES 20262/LABORATORIO 8/practica7"
#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_cdmx_08_caracteristicas_economicas.xlsx"
archivo_excel
## [1] "cpv2020_b_cdmx_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: 872 × 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 09 Ciudad de M… Total Total Total 7915499 5099… 4985… 1144… 2798… 16963 64.4 
##  5 09 Ciudad de M… Total Total 12-1…  367954 19982 19714 268   3476… 329    5.43
##  6 09 Ciudad de M… Total Total 15-1…  650389 1586… 1506… 7948  4909… 762   24.4 
##  7 09 Ciudad de M… Total Total 20-2…  714605 4271… 4086… 18446 2863… 1159  59.8 
##  8 09 Ciudad de M… Total Total 25-2…  752289 6170… 5981… 18963 1337… 1413  82.0 
##  9 09 Ciudad de M… Total Total 30-3…  743611 6442… 6301… 14071 97948 1434  86.6 
## 10 09 Ciudad de M… Total Total 35-3…  705850 6152… 6041… 11097 89129 1454  87.2 
## # ℹ 862 more rows
dim(pea_raw)
## [1] 872  11
str(pea_raw)
## tibble [872 × 11] (S3: tbl_df/tbl/data.frame)
##  $ ...1 : chr [1:872] NA NA NA "09 Ciudad de México" ...
##  $ ...2 : chr [1:872] NA NA NA "Total" ...
##  $ ...3 : chr [1:872] NA NA NA "Total" ...
##  $ ...4 : chr [1:872] NA NA NA "Total" ...
##  $ ...5 : num [1:872] NA NA NA 7915499 367954 ...
##  $ ...6 : chr [1:872] "Población económicamente activa" "Total" NA "5099957" ...
##  $ ...7 : chr [1:872] NA "Ocupada" NA "4985469" ...
##  $ ...8 : chr [1:872] NA "Desocupada" NA "114488" ...
##  $ ...9 : chr [1:872] "Población no económicamente activa" NA NA "2798579" ...
##  $ ...10: chr [1:872] "No especificado" NA NA "16963" ...
##  $ ...11: num [1:872] NA NA NA 64.43 5.43 ...
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 09 Ciudad de M… Total Total Total 7915499 5099… 4985… 1144… 2798… 16963 64.4 
##  5 09 Ciudad de M… Total Total 12-1…  367954 19982 19714 268   3476… 329    5.43
##  6 09 Ciudad de M… Total Total 15-1…  650389 1586… 1506… 7948  4909… 762   24.4 
##  7 09 Ciudad de M… Total Total 20-2…  714605 4271… 4086… 18446 2863… 1159  59.8 
##  8 09 Ciudad de M… Total Total 25-2…  752289 6170… 5981… 18963 1337… 1413  82.0 
##  9 09 Ciudad de M… Total Total 30-3…  743611 6442… 6301… 14071 97948 1434  86.6 
## 10 09 Ciudad de M… Total Total 35-3…  705850 6152… 6041… 11097 89129 1454  87.2 
## 11 09 Ciudad de M… Total Total 40-4…  670307 5778… 5680… 9831  91040 1378  86.2 
## 12 09 Ciudad de M… Total Total 45-4…  668945 5677… 5585… 9160  99787 1447  84.9 
## 13 09 Ciudad de M… Total Total 50-5…  623483 5068… 4983… 8558  1152… 1398  81.3 
## 14 09 Ciudad de M… Total Total 55-5…  526447 3867… 3792… 7445  1384… 1261  73.5 
## 15 09 Ciudad de M… Total Total 60-6…  469514 2719… 2673… 4563  1963… 1215  57.9 
## 16 09 Ciudad de M… Total Total 65-6…  356196 1574… 1550… 2461  1977… 951   44.2 
## 17 09 Ciudad de M… Total Total 70-7…  267744 84142 83150 992   1827… 835   31.4 
## 18 09 Ciudad de M… Total Total 75-7…  175215 40008 39550 458   1345… 684   22.8 
## 19 09 Ciudad de M… Total Total 80-8…  117480 16713 16558 155   1001… 595   14.2 
## 20 09 Ciudad de M… Total Total 85 a…  105470 8166  8094  72    96656 648    7.74

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 09 Ciudad de M… Total Total Total 7915499 5099… 4985… 1144… 2798… 16963 64.4 
##  4 09 Ciudad de M… Total Total 12-1…  367954 19982 19714 268   3476… 329    5.43
##  5 09 Ciudad de M… Total Total 15-1…  650389 1586… 1506… 7948  4909… 762   24.4 
##  6 09 Ciudad de M… Total Total 20-2…  714605 4271… 4086… 18446 2863… 1159  59.8 
##  7 09 Ciudad de M… Total Total 25-2…  752289 6170… 5981… 18963 1337… 1413  82.0 
##  8 09 Ciudad de M… Total Total 30-3…  743611 6442… 6301… 14071 97948 1434  86.6 
##  9 09 Ciudad de M… Total Total 35-3…  705850 6152… 6041… 11097 89129 1454  87.2 
## 10 09 Ciudad de M… Total Total 40-4…  670307 5778… 5680… 9831  91040 1378  86.2 
## 11 09 Ciudad de M… Total Total 45-4…  668945 5677… 5585… 9160  99787 1447  84.9 
## 12 09 Ciudad de M… Total Total 50-5…  623483 5068… 4983… 8558  1152… 1398  81.3 
## 13 09 Ciudad de M… Total Total 55-5…  526447 3867… 3792… 7445  1384… 1261  73.5 
## 14 09 Ciudad de M… Total Total 60-6…  469514 2719… 2673… 4563  1963… 1215  57.9 
## 15 09 Ciudad de M… Total Total 65-6…  356196 1574… 1550… 2461  1977… 951   44.2 
## 16 09 Ciudad de M… Total Total 70-7…  267744 84142 83150 992   1827… 835   31.4 
## 17 09 Ciudad de M… Total Total 75-7…  175215 40008 39550 458   1345… 684   22.8 
## 18 09 Ciudad de M… Total Total 80-8…  117480 16713 16558 155   1001… 595   14.2 
## 19 09 Ciudad de M… Total Total 85 a…  105470 8166  8094  72    96656 648    7.74
## 20 09 Ciudad de M… Total Homb… Total 3747969 2783… 2711… 71942 9552… 9235  74.3
dim(pea_limpia)
## [1] 870  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 09 Ciudad… Total     Total Total         7915499 5099957   4985469 114488    
##  4 09 Ciudad… Total     Total 12-14 años     367954 19982     19714   268       
##  5 09 Ciudad… Total     Total 15-19 años     650389 158631    150683  7948      
##  6 09 Ciudad… Total     Total 20-24 años     714605 427116    408670  18446     
##  7 09 Ciudad… Total     Total 25-29 años     752289 617080    598117  18963     
##  8 09 Ciudad… Total     Total 30-34 años     743611 644229    630158  14071     
##  9 09 Ciudad… Total     Total 35-39 años     705850 615267    604170  11097     
## 10 09 Ciudad… Total     Total 40-44 años     670307 577889    568058  9831      
## 11 09 Ciudad… Total     Total 45-49 años     668945 567711    558551  9160      
## 12 09 Ciudad… Total     Total 50-54 años     623483 506875    498317  8558      
## 13 09 Ciudad… Total     Total 55-59 años     526447 386728    379283  7445      
## 14 09 Ciudad… Total     Total 60-64 años     469514 271950    267387  4563      
## 15 09 Ciudad… Total     Total 65-69 años     356196 157470    155009  2461      
## 16 09 Ciudad… Total     Total 70-74 años     267744 84142     83150   992       
## 17 09 Ciudad… Total     Total 75-79 años     175215 40008     39550   458       
## 18 09 Ciudad… Total     Total 80-84 años     117480 16713     16558   155       
## 19 09 Ciudad… Total     Total 85 años y…     105470 8166      8094    72        
## 20 09 Ciudad… Total     Homb… Total         3747969 2783472   2711530 71942     
## # ℹ 3 more variables: pnea <chr>, no_especificado <chr>,
## #   tasa_participacion <dbl>
str(pea_limpia)
## tibble [870 × 11] (S3: tbl_df/tbl/data.frame)
##  $ entidad           : chr [1:870] NA NA "09 Ciudad de México" "09 Ciudad de México" ...
##  $ municipio         : chr [1:870] NA NA "Total" "Total" ...
##  $ sexo              : chr [1:870] NA NA "Total" "Total" ...
##  $ grupo_edad        : chr [1:870] NA NA "Total" "12-14 años" ...
##  $ pob_12ymas        : num [1:870] NA NA 7915499 367954 650389 ...
##  $ pea_total         : chr [1:870] "Población económicamente activa" "Total" "5099957" "19982" ...
##  $ ocupada           : chr [1:870] NA "Ocupada" "4985469" "19714" ...
##  $ desocupada        : chr [1:870] NA "Desocupada" "114488" "268" ...
##  $ pnea              : chr [1:870] "Población no económicamente activa" NA "2798579" "347643" ...
##  $ no_especificado   : chr [1:870] "No especificado" NA "16963" "329" ...
##  $ tasa_participacion: num [1:870] NA NA 64.43 5.43 24.39 ...

6 Seleccionar variables de interés

6.1 Filtrar municipios y PEA total

pea_cdmx <- pea_limpia %>%
  filter(
    municipio != "Total",
    sexo == "Total",
    grupo_edad == "Total"
  ) %>%
  select(
    municipio,
    pea_total
  )
head(pea_cdmx,20)
## # A tibble: 16 × 2
##    municipio                  pea_total
##    <chr>                      <chr>    
##  1 010 Álvaro Obregón         422861   
##  2 002 Azcapotzalco           239069   
##  3 014 Benito Juárez          276919   
##  4 003 Coyoacán               340527   
##  5 004 Cuajimalpa de Morelos  119508   
##  6 015 Cuauhtémoc             337364   
##  7 005 Gustavo A. Madero      618184   
##  8 006 Iztacalco              224915   
##  9 007 Iztapalapa             984791   
## 10 008 La Magdalena Contreras 132898   
## 11 016 Miguel Hidalgo         244498   
## 12 009 Milpa Alta             83292    
## 13 011 Tláhuac                206502   
## 14 012 Tlalpan                385373   
## 15 017 Venustiano Carranza    247472   
## 16 013 Xochimilco             235784

6.2 Limpiar nombres de municipios

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

head(pea_cdmx,20)
## # A tibble: 16 × 2
##    municipio              pea_total
##    <chr>                      <dbl>
##  1 Álvaro Obregón            422861
##  2 Azcapotzalco              239069
##  3 Benito Juárez             276919
##  4 Coyoacán                  340527
##  5 Cuajimalpa de Morelos     119508
##  6 Cuauhtémoc                337364
##  7 Gustavo A. Madero         618184
##  8 Iztacalco                 224915
##  9 Iztapalapa                984791
## 10 La Magdalena Contreras    132898
## 11 Miguel Hidalgo            244498
## 12 Milpa Alta                 83292
## 13 Tláhuac                   206502
## 14 Tlalpan                   385373
## 15 Venustiano Carranza       247472
## 16 Xochimilco                235784

6.3 Revisar estructura final

str(pea_cdmx)
## tibble [16 × 2] (S3: tbl_df/tbl/data.frame)
##  $ municipio: chr [1:16] "Álvaro Obregón" "Azcapotzalco" "Benito Juárez" "Coyoacán" ...
##  $ pea_total: num [1:16] 422861 239069 276919 340527 119508 ...
summary(pea_cdmx)
##   municipio           pea_total     
##  Length:16          Min.   : 83292  
##  Class :character   1st Qu.:220312  
##  Mode  :character   Median :245985  
##                     Mean   :318747  
##                     3rd Qu.:351738  
##                     Max.   :984791
head(pea_cdmx, 20)
## # A tibble: 16 × 2
##    municipio              pea_total
##    <chr>                      <dbl>
##  1 Álvaro Obregón            422861
##  2 Azcapotzalco              239069
##  3 Benito Juárez             276919
##  4 Coyoacán                  340527
##  5 Cuajimalpa de Morelos     119508
##  6 Cuauhtémoc                337364
##  7 Gustavo A. Madero         618184
##  8 Iztacalco                 224915
##  9 Iztapalapa                984791
## 10 La Magdalena Contreras    132898
## 11 Miguel Hidalgo            244498
## 12 Milpa Alta                 83292
## 13 Tláhuac                   206502
## 14 Tlalpan                   385373
## 15 Venustiano Carranza       247472
## 16 Xochimilco                235784

7 Exportar base para QGIS

7.1 Guardar archivo CSV

write_csv(pea_cdmx, "CDMXPEA.csv")

list.files()
## [1] "CDMXPEA.csv"                                      
## [2] "cpv2020_b_cdmx_08_caracteristicas_economicas.xlsx"
## [3] "logoUNAM.png"                                     
## [4] "union_datosQGIS2.html"                            
## [5] "union_datosQGIS2.Rmd"