El 6 de junio de 2021, en las últimas elecciones generales, los peruanos escogieron al Presidente de la República, los Vicepresidentes, Representantes a la Cámara y Miembros del Parlamento Andino. De 24,290,921 electores habilitados, se registraron 17,485,814 en total, para una tasa de participación de 72%. No obstante, 1,087,222 de votos fueron nulos, es decir, el 6.2% del total.
library(readr)
library(tidyr)
library(ggplot2)
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(GGally)
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
Primero, importamos la base de datos nacional que contiene los
resultados de las elecciones utilizando la función
read_delim de la librería readr. Especificamos
la codificación ISO-8859-1 para asegurar la correcta
interpretación de caracteres especiales.
Peru_NAL <- read_delim("C:\\Users\\tomas\\OneDrive\\Desktop\\ArcGIS\\UniAndes\\Peru\\RESUMEN_VOTOS_PRESI_EG2021_NAL.csv",
locale = locale(encoding = "ISO-8859-1"))
## Rows: 2912 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (4): DEPARTAMENTO, PROVINCIA, DISTRITO, CCPP
## num (6): Electores Habiles, Votos Emitidos, Votos Validos, Votos Blancos, Vo...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
str(Peru_NAL)
## spc_tbl_ [2,912 × 10] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ DEPARTAMENTO : chr [1:2912] "AMAZONAS" "AMAZONAS" "AMAZONAS" "AMAZONAS" ...
## $ PROVINCIA : chr [1:2912] "BAGUA" "BAGUA" "BAGUA" "BAGUA" ...
## $ DISTRITO : chr [1:2912] "ARAMANGO" "ARAMANGO" "ARAMANGO" "BAGUA" ...
## $ CCPP : chr [1:2912] "EL MUYO" "EL PORVENIR" NA "PECA PALACIOS" ...
## $ Electores Habiles: num [1:2912] 934 1537 6055 388 18334 ...
## $ Votos Emitidos : num [1:2912] 684 1046 3842 299 13303 ...
## $ Votos Validos : num [1:2912] 531 679 2607 209 9959 ...
## $ Votos Blancos : num [1:2912] 120 273 933 72 1981 ...
## $ Votos Nulos : num [1:2912] 33 94 302 18 1363 ...
## $ Ausentismo : num [1:2912] 250 491 2213 89 5031 ...
## - attr(*, "spec")=
## .. cols(
## .. DEPARTAMENTO = col_character(),
## .. PROVINCIA = col_character(),
## .. DISTRITO = col_character(),
## .. CCPP = col_character(),
## .. `Electores Habiles` = col_number(),
## .. `Votos Emitidos` = col_number(),
## .. `Votos Validos` = col_number(),
## .. `Votos Blancos` = col_number(),
## .. `Votos Nulos` = col_number(),
## .. Ausentismo = col_number()
## .. )
## - attr(*, "problems")=<externalptr>
Agrupamos los datos a nivel de departamento, provincia y distrito con
group_by(), y calculamos diversas estadísticas como el
número de electores, votos emitidos, votos válidos, votos en blanco,
votos nulos, y ausentismo con summarise(). También
calculamos las tasas de ausentismo, nulidad y votos en blanco con
mutate().
Peru_Dep <- Peru_NAL %>%
group_by(DEPARTAMENTO) %>%
summarize(
Electores = sum(`Electores Habiles`),
Emitidos_Dep = sum(`Votos Emitidos`),
Validos_Dep = sum(`Votos Validos`),
Blancos_Dep = sum(`Votos Blancos`),
Nulos_Dep = sum(`Votos Nulos`),
Ausentismo_Dep = sum(Ausentismo),
Tasa_ausentismo = sum(Ausentismo) / sum(`Electores Habiles`),
Tasa_nulos = sum(`Votos Nulos`) / sum(`Votos Emitidos`)
)
Peru_Prov <- Peru_NAL %>%
group_by(DEPARTAMENTO, PROVINCIA) %>%
summarize(
Electores = sum(`Electores Habiles`),
Emitidos_Prov = sum(`Votos Emitidos`),
Validos_Prov = sum(`Votos Validos`),
Blancos_Prov = sum(`Votos Blancos`),
Nulos_Prov = sum(`Votos Nulos`),
Ausentismo_Prov = sum(Ausentismo),
Tasa_ausentismo = sum(Ausentismo) / sum(`Electores Habiles`),
Tasa_nulos = sum(`Votos Nulos`) / sum(`Votos Emitidos`)
) %>%
mutate(Territorio = paste(DEPARTAMENTO, PROVINCIA, sep = "-x|"),
Tasa_blancos = Blancos_Prov / Emitidos_Prov)
## `summarise()` has grouped output by 'DEPARTAMENTO'. You can override using the
## `.groups` argument.
Peru_Dist <- Peru_NAL %>%
group_by(DEPARTAMENTO, PROVINCIA, DISTRITO) %>%
summarize(
Electores = sum(`Electores Habiles`),
Emitidos_Dist = sum(`Votos Emitidos`),
Validos_Dist = sum(`Votos Validos`),
Blancos_Dist = sum(`Votos Blancos`),
Nulos_Dist = sum(`Votos Nulos`),
Ausentismo_Dist = sum(Ausentismo),
Tasa_ausentismo = sum(Ausentismo) / sum(`Electores Habiles`),
Tasa_nulos = sum(`Votos Nulos`) / sum(`Votos Emitidos`)
) %>%
mutate(Territorio = paste(DEPARTAMENTO, PROVINCIA, DISTRITO, sep = "-"),
Tasa_blancos = Blancos_Dist / Emitidos_Dist)
## `summarise()` has grouped output by 'DEPARTAMENTO', 'PROVINCIA'. You can
## override using the `.groups` argument.
Exportamos las bases de datos procesadas a archivos CSV para su posterior análisis espacial en ArcGIS.
write_csv2(Peru_Dep, 'C:/Users/tomas/OneDrive/Desktop/ArcGIS/UniAndes/Peru/RESUMEN_VOTOS_PRESI_EG2021_DEP.csv')
write.csv2(Peru_Prov, 'C:/Users/tomas/OneDrive/Desktop/ArcGIS/UniAndes/Peru/RESUMEN_VOTOS_PRESI_EG2021_PROV.csv')
write.csv2(Peru_Dist, 'C:/Users/tomas/OneDrive/Desktop/ArcGIS/UniAndes/Peru/RESUMEN_VOTOS_PRESI_EG2021_DIST.csv')
Creamos una matriz de gráficos que muestra las relaciones entre la
tasa de votos en blanco, la tasa de ausentismo y la tasa de nulidad para
los distritos, utilizando la función ggpairs del paquete
GGally. Los puntos están coloreados según el departamento y
tienen una transparencia ajustada para mejorar la visualización.
ggpairs(Peru_Dist, columns = c("Tasa_blancos", "Tasa_ausentismo", "Tasa_nulos"),
aes(color = DEPARTAMENTO, alpha = 0.6)) +
labs(title = "Matriz de gráficos: Tasa de Votos en Blanco, Tasa de Ausentismo y Tasa de Nulidad")