install.packages("remotes")
remotes::install_github("SoyAndrea/arcenso")Taller Procesando datos censales en R
Taller práctico para aprender a explorar y procesar indicadores demográficos con los paquetes ARcenso y tidyverse.
Manos al código: calculando indicador demográfico
Vamos a calcular la estructura de población de la provincia de Buenos Aires del año 1970.
Instalación de paquetes de trabajo
ARcenso
tidyverse
install.packages("tidyverse")
install.packages("gt")Activación de paquetes con library
esto realizo cada vez que use R
Acá emmpezamos
library(arcenso) # datos censales
library(tidyverse) # procesar la información
library(gt) # hacer tablas Importo datos con la función get_census()
estructura_pba_1970 <- get_census(year = 1970,
topic = "ESTRUCTURA DE POBLACION",
geolvl = "Provincia de Buenos Aires")
estructura_pba_1970$c70_buenosaires_poblacion_c1
# A tibble: 162 × 4
sexo grupo_de_edad lugar_nacimiento poblacion
<chr> <chr> <chr> <chr>
1 Total 0-4 Total 833150
2 Total 0-4 Nacidos en el país 827450
3 Total 0-4 Nacidos en el extranjero 5700
4 Total 5-9 Total 791450
5 Total 5-9 Nacidos en el país 782700
6 Total 5-9 Nacidos en el extranjero 8750
7 Total 10-14 Total 759500
8 Total 10-14 Nacidos en el país 746150
9 Total 10-14 Nacidos en el extranjero 13350
10 Total 15-19 Total 743300
# ℹ 152 more rows
Reviso la estructura de mis datos
str(estructura_pba_1970)List of 1
$ c70_buenosaires_poblacion_c1: tibble [162 × 4] (S3: tbl_df/tbl/data.frame)
..$ sexo : chr [1:162] "Total" "Total" "Total" "Total" ...
..$ grupo_de_edad : chr [1:162] "0-4" "0-4" "0-4" "5-9" ...
..$ lugar_nacimiento: chr [1:162] "Total" "Nacidos en el país" "Nacidos en el extranjero" "Total" ...
..$ poblacion : chr [1:162] "833150" "827450" "5700" "791450" ...
Elijo la tabla a trabajar como DataFrame
estructura_pba_1970 <- estructura_pba_1970[[1]]
estructura_pba_1970# A tibble: 162 × 4
sexo grupo_de_edad lugar_nacimiento poblacion
<chr> <chr> <chr> <chr>
1 Total 0-4 Total 833150
2 Total 0-4 Nacidos en el país 827450
3 Total 0-4 Nacidos en el extranjero 5700
4 Total 5-9 Total 791450
5 Total 5-9 Nacidos en el país 782700
6 Total 5-9 Nacidos en el extranjero 8750
7 Total 10-14 Total 759500
8 Total 10-14 Nacidos en el país 746150
9 Total 10-14 Nacidos en el extranjero 13350
10 Total 15-19 Total 743300
# ℹ 152 more rows
Calculo indicador con dplyr
Estructura de población por grupos quinquenales de edad según sexo
pba_1970 <- estructura_pba_1970 %>%
filter(sexo != "Total") %>%
mutate(
grupo_de_edad = case_when(
grupo_de_edad == "0-4" ~ "00-04",
grupo_de_edad == "5-9" ~ "05-09",
TRUE ~ grupo_de_edad),
poblacion = as.numeric(poblacion)) %>%
group_by(sexo) %>%
mutate(poblacion_rel = if_else(sexo == "Varones", -poblacion / sum(poblacion),
poblacion /sum(poblacion))) %>%
ungroup()Grafico el indicador con ggplot2
g1 <- pba_1970 %>%
ggplot(aes(x = poblacion_rel,
y = grupo_de_edad,
fill = sexo)) +
geom_col() +
scale_fill_manual(values = c("#003049","#6a994e")) +
scale_x_continuous(
limits = c(-0.12, 0.12),
breaks = seq(-0.12, 0.12, by = 0.03),
labels = paste0(abs(seq(-12, 12, by = 3)), "%") ) +
labs(
title = "Gráfico 1. Estructura de población por sexo y grupo de edad.",
subtitle = "Provincia de Buenos Aires. Año 1970",
x = "porcentaje",
y = "grupo de edad",
fill = " ",
caption = "Fuente: INDEC, Censo Nacional de Población, Familias y Viviendas 1970." ) +
theme_bw() +
theme(legend.position = "bottom")Gráfico estático con ggplot2
g1 # observo el resultado
Tabla de resultado en gt
tabla1 <- estructura_pba_1970 %>%
pivot_wider(names_from = "sexo", values_from = "poblacion") %>%
filter(lugar_nacimiento == "Total") %>%
select(-2) %>%
mutate(Total = as.numeric(Total),
Mujeres = as.numeric(Mujeres),
Varones = as.numeric(Varones))
tabla_pba <- tabla1 %>%
gt() %>%
tab_header(
title = "Tabla 1. Estructura de población por sexo y grupo de edad. Provincia de Buenos Aires. Año 1970" ) %>%
cols_label(
grupo_de_edad = "Grupo quinquenal de edad"
) %>%
grand_summary_rows(
columns = c(Total, Varones, Mujeres),
fns = list("Total población" = ~sum(.))) %>%
tab_options(
heading.align = "left",
heading.background.color = "#2B5597",
footnotes.background.color = "#cedcf1",
column_labels.font.weight = "bold"
) %>%
tab_source_note('Fuente: INDEC, Censo Nacional de Población, Familias y Viviendas 1970.') Tabla final
tabla_pba| Tabla 1. Estructura de población por sexo y grupo de edad. Provincia de Buenos Aires. Año 1970 | ||||
|---|---|---|---|---|
| Grupo quinquenal de edad | Total | Varones | Mujeres | |
| 0-4 | 833150 | 422550 | 410600 | |
| 5-9 | 791450 | 400900 | 390550 | |
| 10-14 | 759500 | 381250 | 378250 | |
| 15-19 | 743300 | 382150 | 361150 | |
| 20-24 | 736150 | 372250 | 363900 | |
| 25-29 | 666950 | 337150 | 329800 | |
| 30-34 | 620600 | 309200 | 311400 | |
| 35-39 | 634350 | 323900 | 310450 | |
| 40-44 | 627400 | 318500 | 308900 | |
| 45-49 | 559700 | 281650 | 278050 | |
| 50-54 | 458800 | 225900 | 232900 | |
| 55-59 | 408350 | 201450 | 206900 | |
| 60-64 | 335400 | 165000 | 170400 | |
| 65-69 | 250250 | 121600 | 128650 | |
| 70-74 | 165950 | 75950 | 90000 | |
| 75-79 | 106450 | 47300 | 59150 | |
| 80-84 | 59250 | 25450 | 33800 | |
| 85 y más | 31250 | 12050 | 19200 | |
| Total población | — | 8788250 | 4404200 | 4384050 |
| Fuente: INDEC, Censo Nacional de Población, Familias y Viviendas 1970. | ||||