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.
# 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
install.packages(c("readxl", "dplyr", "stringr", "readr", "janitor"))
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
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"
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
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
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"
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 ...
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
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
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
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"