#install.packages("data.table")
#install.packages("readr")
#install.packages("tidyverse")
#install.packages("dplyr")
#install.packages("tidyr")
#install.packages("ggplot2")
#install.packages("sf")
#install.packages("extraFont")
library(data.table)
library(readr)
library(tidyverse)
library(dplyr)
library(magrittr)
library(ggplot2)
library(sf)
library(extrafont)
font_import()
## Importing fonts may take a few minutes, depending on the number of fonts and the speed of the system.
## Continue? [y/n]
loadfonts(device = "win")
Pue2000 <- read.csv("entradas/Pue_Gpos5_2000.csv", encoding = "UTF-8")
head(Pue2000)
## X.U.FEFF.ENTFED CVEMUN Municipio GpoEdad00 PT00 H00 M00
## 1 21 Tot Total entidad Total 5076686 2448801 2627885
## 2 21 Tot Total entidad 00_04 578641 293332 285309
## 3 21 Tot Total entidad 05_09 623917 314710 309207
## 4 21 Tot Total entidad 10_14 600452 303571 296881
## 5 21 Tot Total entidad 15_19 532196 258724 273472
## 6 21 Tot Total entidad 20_24 460965 214250 246715
#summary(Pue2000)
#class(Pue2000$Municipio)
#Asignar clave de entidad, clave de municipio y nombre de municipio correctamente
Pue2000$CVE_ENT <- 21
Pue2000$CVE_MUN <- substr(Pue2000$Municipio, start = 1, stop = 3)
Pue2000$NOM_MUN <- substr(Pue2000$Municipio, start = 5, stop = 50)
#Eliminar columnas con errores, se asigna a otro objeto para no pisarlo
PUE_2000 <- Pue2000 %>%
select(4:10)
colnames(PUE_2000)
## [1] "GpoEdad00" "PT00" "H00" "M00" "CVE_ENT" "CVE_MUN"
## [7] "NOM_MUN"
#Uniformar nombres de columnas
PUE_2000 <- PUE_2000 %>%
mutate(Hombres = H00*-1) %>%
mutate(Mujeres = M00) %>%
mutate(GrupoEdad = GpoEdad00) %>%
mutate(year = 2000)
#Transformar las filas por grupo de edad a columnas para poder sumar <- OJOOOOOO
Pue2000_2 <- PUE_2000 %>%
select(CVE_MUN, NOM_MUN, GrupoEdad, Hombres, Mujeres, year) %>%
pivot_longer(cols = c(Hombres, Mujeres),
names_to = "Sexo",
values_to = "Pob")
# Quitar totales, no especificados y último grupo de edad
piramide00 <- Pue2000_2 %>%
#filter(GrupoEdad %in% c("00_04","05_09","10_14","15_19","20_24","25_29","30_34","35_39","40_44","45_49","50_54","55_59","60_64","65_69","70_74","75_79","80_84","85_89","90_94","95_99"))
filter(!(GrupoEdad %in% c("Total","No_especificado","100_y_mas"))) %>% # Más fácil
#Quitar totales de entidad y de municipio
filter(!(NOM_MUN %in% c("l entidad","l")))
##Pirámide de población Estado de Puebla, año 2000
piramide00 %>%
ggplot(aes(x = GrupoEdad, y = Pob/1000, fill = Sexo)) +
geom_col(position = "stack", alpha = 0.7) +
coord_flip() +
# Asignar colores
scale_fill_manual(values = c("midnightblue", "darkred")) +
# etiquetas
theme_gray() +
labs(
title = "Pirámide de población Estado de Puebla, 2000",
subtitle = "Grupos quinquenales de edad",
y = "Población en millares, por sexo",
x = "Grupos de edad, en años",
caption = "Fuente: Censo General de Población y Vivienda, INEGI, 2000") +
# leyenda
theme(
legend.position = "bottom",
text = element_text(family = "Candara"))
Pue2010 <- read.csv("entradas/Pue_Gpos5_2010.csv", fileEncoding = "latin1") #(Se usó fileEncoding porque cargaba mal los caracteres con acento y marcaba error)
head(Pue2010)
## ENTFED Municipio10 GpoEdad10 PT10 H10 M10
## 1 21 Total Total 5778539 2771400 3007139
## 2 21 Total 00_04 578669 296208 282461
## 3 21 Total 05_09 619535 313222 306313
## 4 21 Total 10_14 612393 311362 301031
## 5 21 Total 15_19 610213 300538 309675
## 6 21 Total 20_24 514638 243840 270798
summary(Pue2010)
## ENTFED Municipio10 GpoEdad10 PT10
## Min. :21 Length:3437 Length:3437 Min. : 1
## 1st Qu.:21 Class :character Class :character 1st Qu.: 268
## Median :21 Mode :character Mode :character Median : 678
## Mean :21 Mean : 6725
## 3rd Qu.:21 3rd Qu.: 1775
## Max. :21 Max. :5778539
## H10 M10
## Min. : 0 Min. : 0
## 1st Qu.: 125 1st Qu.: 142
## Median : 319 Median : 355
## Mean : 3225 Mean : 3500
## 3rd Qu.: 859 3rd Qu.: 914
## Max. :2771400 Max. :3007139
#Asignar clave de entidad, clave de municipio y nombre de municipio correctamente
Pue2010$CVE_MUN <- substr(Pue2010$Municipio10, start = 1, stop = 3)
Pue2010$NOM_MUN <- substr(Pue2010$Municipio10, start = 5, stop = 50)
#Eliminar columnas con errores, se asigna a otro objeto para no pisarlo
PUE_2010 <- Pue2010 %>%
select(1,3:8)
colnames(PUE_2010)
## [1] "ENTFED" "GpoEdad10" "PT10" "H10" "M10" "CVE_MUN"
## [7] "NOM_MUN"
#Uniformar nombres de columnas
PUE_2010 <- PUE_2010 %>%
mutate(Hombres = H10*-1) %>%
mutate(Mujeres = M10) %>%
mutate(GrupoEdad = GpoEdad10) %>%
mutate(year = 2010)
#Transformar las filas por grupo de edad a columnas para poder sumar <- OJOOOOOO
Pue2010_2 <- PUE_2010 %>%
select(CVE_MUN, NOM_MUN, GrupoEdad, Hombres, Mujeres, year) %>%
pivot_longer(cols = c(Hombres, Mujeres),
names_to = "Sexo",
values_to = "Pob")
# Quitar totales, no especificados y último grupo de edad
piramide10 <- Pue2010_2 %>%
#filter(GrupoEdad %in% c("00_04","05_09","10_14","15_19","20_24","25_29","30_34","35_39","40_44","45_49","50_54","55_59","60_64"))
filter(!(GrupoEdad %in% c("Total","No_especificado","65_y_mas"))) %>% # Más fácil
#Quitar totales de entidad y de municipio
filter(!(NOM_MUN %in% c("l entidad","l")))
##Pirámide de población Estado de Puebla, 2010
piramide10 %>%
ggplot(aes(x = GrupoEdad, y = Pob/1000, fill = Sexo)) +
geom_col(position = "stack", alpha = 0.7) +
coord_flip() +
# Asignar colores
scale_fill_manual(values = c("midnightblue", "darkred")) +
# etiquetas
theme_gray() +
labs(
title = "Pirámide de población Estado de Puebla, 2010",
subtitle = "Grupos quinquenales de edad",
y = "Población en millares, por sexo",
x = "Grupos de edad, en años",
caption = "Fuente: Censo General de Población y Vivienda, INEGI, 2010") +
# leyenda
theme(
legend.position = "bottom",
text = element_text(family = "Candara"))
Pue2020 <- read.csv("entradas/Pue_Gpos5_2020.csv", encoding = "UTF-8")
head(Pue2020)
## X.U.FEFF.ENTFED Municipio20 GpoEdad20 PT20 H20 M20
## 1 21 Total Total 6567595 3159817 3407778
## 2 21 Total 00_04 587121 298791 288330
## 3 21 Total 05_09 608444 308404 300040
## 4 21 Total 10_14 604243 307360 296883
## 5 21 Total 15_19 606314 307731 298583
## 6 21 Total 20_24 564048 274819 289229
#summary(Pue2020)
#Asignar clave de entidad, clave de municipio y nombre de municipio correctamente
Pue2020$CVE_ENT <- 21
Pue2020$CVE_MUN <- substr(Pue2020$Municipio20, start = 1, stop = 3)
Pue2020$NOM_MUN <- substr(Pue2020$Municipio20, start = 5, stop = 50)
#Eliminar columnas con errores, se asigna a otro objeto para no pisarlo
PUE_2020 <- Pue2020 %>%
select(3:9)
#colnames(PUE_2020)
#Uniformar nombres de columnas
PUE_2020 <- PUE_2020 %>%
mutate(Hombres = H20*-1) %>%
mutate(Mujeres = M20) %>%
mutate(GrupoEdad = GpoEdad20) %>%
mutate(year = 2020)
#Transformar las filas por grupo de edad a columnas para poder sumar <- OJOOOOOO
Pue2020_2 <- PUE_2020 %>%
select(CVE_MUN, NOM_MUN, GrupoEdad, Hombres, Mujeres, year) %>%
pivot_longer(cols = c(Hombres, Mujeres),
names_to = "Sexo",
values_to = "Pob")
# Quitar totales, no especificados y último grupo de edad
piramide20 <- Pue2020_2 %>%
#filter(GrupoEdad %in% c("00_04","05_09","10_14","15_19","20_24","25_29","30_34","35_39","40_44","45_49","50_54","55_59","60_64","65_69","70_74"))
filter(!(GrupoEdad %in% c("Total","No_especificado","75_y_mas"))) %>% # Más fácil
#Quitar totales de entidad y de municipio
filter(!(NOM_MUN %in% c("l entidad","l")))
##Pirámide de población Estado de Puebla, 2020
piramide20 %>%
ggplot(aes(x = GrupoEdad, y = Pob/1000, fill = Sexo)) +
geom_col(position = "stack", alpha = 0.7) +
coord_flip() +
# Asignar colores
scale_fill_manual(values = c("midnightblue", "darkred")) +
# etiquetas
theme_gray() +
labs(
title = "Pirámide de población Estado de Puebla, 2020",
subtitle = "Grupos quinquenales de edad",
y = "Población en millares, por sexo",
x = "Grupos de edad, en años",
caption = "Fuente: Censo General de Población y Vivienda, INEGI, 2020") +
# leyenda
theme(
legend.position = "bottom",
text = element_text(family = "Candara"))
##Pirámides de población municipios metropolitanos conurbados, excepto el municipio de Puebla, 2020
piramide20 %>%
filter(CVE_MUN %in% c("015","034","041","074","090","106","119","140")) %>%
filter(!(GrupoEdad %in% c("65_69","70_74","75_y_mas"))) %>%
ggplot(aes(x = GrupoEdad, y = Pob, fill = Sexo)) +
geom_col(position = "stack", alpha = 0.7) +
coord_flip() +
# Asignar colores
scale_fill_manual(values = c("midnightblue", "darkred")) +
theme_bw()+
# leyenda
theme(
legend.position = "bottom",
text = element_text(family = "Candara")) +
facet_wrap(~ NOM_MUN, ncol=2) +
# etiquetas
scale_y_continuous(labels = abs) +
labs(
y = "Población",
x = "Grupos de edad, en años",
title = "Pirámide de población municipios metropolitanos conurbados, 2020",
subtitle = "Grupos quinquenales de edad, menores de 65 años",
caption = "Fuente: Censo General de Población y Vivienda, INEGI, 2020")
##Pirámides de población municipios metropolitanos conurbados, excepto el municipio de Puebla, 2020
#Unir la información de los tres censos para hacer el face_wrap por año
# Se buscó cuál era la función para unir filas = rbind
piramides <- rbind(piramide00, piramide10, piramide20) %>%
#Filtro para sacar valores grupos de edad mayores de 65 años, ya que las tres bases de datos tienen cortes diferentes
filter(!(GrupoEdad %in% c("65_69","70_74","65_69","70_74","75_79","80_84","85_89","90_94","95_99","65_y_mas","75_y_mas","100_y_mas")))
piramides %>%
#Filtro para el área metropolitana
filter(CVE_MUN %in% c("015","034","041","074","090","106","114","119","140")) %>%
ggplot(aes(x = GrupoEdad, y = Pob/1000, fill = Sexo)) +
geom_col(position = "stack", alpha = 0.7) +
coord_flip() +
# Asignar colores
scale_fill_manual(values = c("midnightblue", "darkred")) +
theme_gray()+
# leyenda
theme(
legend.position = "bottom",
text = element_text(family = "Candara")) +
facet_wrap(~ year, ncol=3) +
# etiquetas
scale_y_continuous(labels = abs) +
labs(
y = "Población en millares",
x = "Grupos de edad, en años",
title = "Pirámide de población Área Metropolitana de Puebla, años 2000, 2010, 2020",
subtitle = "Grupos quinquenales de edad, menores de 65 años",
caption = "Fuente: Censo General de Población y Vivienda, INEGI, 2020")
#Unir la información de los tres censos para hacer el face_wrap por año
# Se buscó cuál era la función para unir filas = rbind
piramides <- rbind(piramide00, piramide10, piramide20) %>%
#Filtro para sacar valores grupos de edad mayores de 65 años, ya que las tres bases de datos tienen cortes diferentes
filter(!(GrupoEdad %in% c("65_69","70_74","65_69","70_74","75_79","80_84","85_89","90_94","95_99","65_y_mas","75_y_mas","100_y_mas")))
piramides %>%
#Filtro para el área metropolitana, solamente los 4 municipios más grandes
filter(CVE_MUN %in% c("041","114","119","140")) %>%
ggplot(aes(x = GrupoEdad, y = Pob/1000, fill = Sexo)) +
geom_col(position = "stack", alpha = 0.7, scale = "NULL") +
coord_flip() +
# Asignar colores
scale_fill_manual(values = c("midnightblue", "darkred")) +
theme_gray()+
# leyenda
theme(axis.title.x=element_blank(), axis.text.x=element_blank(),
legend.position = "bottom",
text = element_text(family = "Candara")) +
#Cuadricula de pirámides por Municipio y año
facet_grid(vars(year), vars(NOM_MUN))