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.
# 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
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_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"
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
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
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 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 ...
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
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
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
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"