Primeros pasos con spain2Rep

spain2Rep ofrece acceso programático a datos electorales y contextuales del Atlas Electoral de la Segunda República Española (1931–1936). El paquete está diseñado para ser sencillo: una función principal para cargar y filtrar los datos, y una función de representación gráfica para crear mapas rápidamente.

Instalación

# Instalar desde GitHub (hasta que esté disponible en CRAN)
# remotes::install_github("tonirodon/spain2Rep")
library(spain2Rep)
library(dplyr)
library(tidyr)
library(ggplot2)

¿Qué datos están disponibles?

Antes de cargar cualquier dato, se puede consultar qué años, distritos y comunidades autónomas cubre actualmente el paquete:

meta <- rep_metadata()
meta$available_years          # años electorales, por nivel
#> $municipality
#> [1] 1936
#> 
#> $district
#> [1] 1931 1933 1936
meta$available_referendums    # años de referéndums
#> [1] 1936
meta$regions
#>  [1] "Andalucía"                     "Aragón"                       
#>  [3] "Asturias (Principado de )"     "Balears (Illes)"              
#>  [5] "Canarias"                      "Cantabria"                    
#>  [7] "Castilla y León"               "Castilla-La Mancha"           
#>  [9] "Cataluña"                      "Ceuta"                        
#> [11] "Comunitat Valenciana"          "Extremadura"                  
#> [13] "Galicia"                       "Madrid (Comunidad de )"       
#> [15] "Melilla"                       "Murcia (Región de )"          
#> [17] "Navarra (Comunidad Foral de )" "País Vasco"                   
#> [19] "Rioja (La)"

Cargar los datos

rep_data() cubre dos niveles geográficos para los datos electorales, seleccionables mediante el argumento level:

Conjunto de datos completo

rep_data() sin argumentos devuelve el conjunto de datos municipal más reciente en forma de tibble:

data <- rep_data()
glimpse(data)
#> Rows: 8,853
#> Columns: 129
#> $ cod_muni                                               <chr> "03002", "03003…
#> $ region                                                 <chr> "Comunitat Vale…
#> $ cod_ccaa                                               <chr> "10", "10", "10…
#> $ prov                                                   <chr> "Alicante/Alaca…
#> $ cod_prov                                               <chr> "03", "03", "03…
#> $ prov_cap                                               <dbl> 0, 0, 0, 0, 0, …
#> $ island                                                 <chr> NA, NA, NA, NA,…
#> $ PJ                                                     <chr> "Novelda", "Coc…
#> $ PJ_cap                                                 <dbl> 0, 0, 0, 0, 0, …
#> $ elect_round                                            <dbl> 1, 1, 1, 1, 1, …
#> $ year                                                   <dbl> 1936, 1936, 193…
#> $ date                                                   <chr> "1936/02/16 00:…
#> $ district                                               <chr> "Alicante", "Al…
#> $ total_seats                                            <dbl> 11, 11, 11, 11,…
#> $ majority_seats                                         <dbl> 8, 8, 8, 8, 8, …
#> $ mun                                                    <chr> "Agost", "Agres…
#> $ elect                                                  <dbl> NA, NA, NA, NA,…
#> $ votant                                                 <dbl> NA, NA, NA, NA,…
#> $ elect_est                                              <dbl> 1555, 681, 582,…
#> $ turnout_real                                           <dbl> NA, NA, NA, NA,…
#> $ turnout_est                                            <dbl> 71.19, 76.67, 8…
#> $ total_votes                                            <dbl> 8856, 4177, 380…
#> $ total_sections                                         <dbl> 4, 2, 2, 2, 1, …
#> $ missing_sections                                       <dbl> 0, 0, 0, 0, 0, …
#> $ completeness_pct                                       <dbl> 100, 100, 100, …
#> $ data_source                                            <chr> "ACD", "ACD", "…
#> $ first_platform                                         <chr> "left_coalition…
#> $ sum_votes_center_right_republican_platforms            <dbl> NA, NA, NA, NA,…
#> $ sum_votes_communist_and_other_lw_platforms             <dbl> NA, NA, NA, NA,…
#> $ sum_votes_left_wing_republican_platforms               <dbl> NA, NA, NA, NA,…
#> $ sum_votes_other                                        <dbl> 52, 26, 9, 0, 0…
#> $ sum_votes_right_wing_regionalist_platforms             <dbl> NA, NA, NA, NA,…
#> $ sum_votes_right_wing_platforms                         <dbl> NA, NA, NA, NA,…
#> $ sum_votes_socialist_platforms                          <dbl> NA, NA, NA, NA,…
#> $ sum_votes_blank_and_null                               <dbl> NA, NA, NA, NA,…
#> $ sum_votes_left_wing_republican_socialist_coalition     <dbl> NA, NA, NA, NA,…
#> $ sum_votes_left_wing_regionalist_platforms              <dbl> NA, NA, NA, NA,…
#> $ sum_votes_otros                                        <dbl> NA, NA, NA, NA,…
#> $ sum_votes_basque_nat_coal                              <dbl> NA, NA, NA, NA,…
#> $ sum_votes_left_coalition                               <dbl> 5395, 2144, 263…
#> $ sum_votes_right_coalition                              <dbl> 3409, 2007, 116…
#> $ sum_votes_centrist_platforms                           <dbl> 0, 0, 1, 19, 0,…
#> $ sum_votes_socialist_led_platforms                      <dbl> NA, NA, NA, NA,…
#> $ sum_votes_republican_socialist_coalition               <dbl> NA, NA, NA, NA,…
#> $ mean_votes_center_right_republican_platforms           <dbl> NA, NA, NA, NA,…
#> $ mean_votes_communist_and_other_lw_platforms            <dbl> NA, NA, NA, NA,…
#> $ mean_votes_left_wing_republican_platforms              <dbl> NA, NA, NA, NA,…
#> $ mean_votes_other                                       <dbl> 17.33, 8.67, 3.…
#> $ mean_votes_right_wing_regionalist_platforms            <dbl> NA, NA, NA, NA,…
#> $ mean_votes_right_wing_platforms                        <dbl> NA, NA, NA, NA,…
#> $ mean_votes_socialist_platforms                         <dbl> NA, NA, NA, NA,…
#> $ mean_votes_blank_and_null                              <dbl> NA, NA, NA, NA,…
#> $ mean_votes_left_wing_republican_socialist_coalition    <dbl> NA, NA, NA, NA,…
#> $ mean_votes_left_wing_regionalist_platforms             <dbl> NA, NA, NA, NA,…
#> $ mean_votes_otros                                       <dbl> NA, NA, NA, NA,…
#> $ mean_votes_basque_nat_coal                             <dbl> NA, NA, NA, NA,…
#> $ mean_votes_left_coalition                              <dbl> 674.38, 268.00,…
#> $ mean_votes_right_coalition                             <dbl> 426.12, 250.88,…
#> $ mean_votes_centrist_platforms                          <dbl> 0, 0, 1, 19, 0,…
#> $ mean_votes_socialist_led_platforms                     <dbl> NA, NA, NA, NA,…
#> $ mean_votes_republican_socialist_coalition              <dbl> NA, NA, NA, NA,…
#> $ pct_original_center_right_republican_platforms         <dbl> NA, NA, NA, NA,…
#> $ pct_original_communist_and_other_lw_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_original_left_wing_republican_platforms            <dbl> NA, NA, NA, NA,…
#> $ pct_original_other                                     <dbl> NA, NA, NA, NA,…
#> $ pct_original_right_wing_regionalist_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_original_right_wing_platforms                      <dbl> NA, NA, NA, NA,…
#> $ pct_original_socialist_platforms                       <dbl> NA, NA, NA, NA,…
#> $ pct_original_blank_and_null                            <dbl> NA, NA, NA, NA,…
#> $ pct_original_left_wing_republican_socialist_coalition  <dbl> NA, NA, NA, NA,…
#> $ pct_original_left_wing_regionalist_platforms           <dbl> NA, NA, NA, NA,…
#> $ pct_original_otros                                     <dbl> NA, NA, NA, NA,…
#> $ pct_original_basque_nat_coal                           <dbl> NA, NA, NA, NA,…
#> $ pct_original_left_coalition                            <dbl> NA, NA, NA, NA,…
#> $ pct_original_right_coalition                           <dbl> NA, NA, NA, NA,…
#> $ pct_original_centrist_platforms                        <dbl> NA, NA, NA, NA,…
#> $ pct_original_socialist_led_platforms                   <dbl> NA, NA, NA, NA,…
#> $ pct_original_republican_socialist_coalition            <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_center_right_republican_platforms         <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_communist_and_other_lw_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_left_wing_republican_platforms            <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_other                                     <dbl> 0.59, 0.62, 0.2…
#> $ pct_sumbased_right_wing_regionalist_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_right_wing_platforms                      <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_socialist_platforms                       <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_blank_and_null                            <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_left_wing_republican_socialist_coalition  <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_left_wing_regionalist_platforms           <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_otros                                     <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_basque_nat_coal                           <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_left_coalition                            <dbl> 60.92, 51.33, 6…
#> $ pct_sumbased_right_coalition                           <dbl> 38.49, 48.05, 3…
#> $ pct_sumbased_centrist_platforms                        <dbl> 0.00, 0.00, 0.0…
#> $ pct_sumbased_socialist_led_platforms                   <dbl> NA, NA, NA, NA,…
#> $ pct_sumbased_republican_socialist_coalition            <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_center_right_republican_platforms        <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_communist_and_other_lw_platforms         <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_left_wing_republican_platforms           <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_other                                    <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_right_wing_regionalist_platforms         <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_right_wing_platforms                     <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_socialist_platforms                      <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_blank_and_null                           <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_left_wing_republican_socialist_coalition <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_left_wing_regionalist_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_otros                                    <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_basque_nat_coal                          <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_left_coalition                           <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_right_coalition                          <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_centrist_platforms                       <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_socialist_led_platforms                  <dbl> NA, NA, NA, NA,…
#> $ pct_meanbased_republican_socialist_coalition           <dbl> NA, NA, NA, NA,…
#> $ pct_combined_center_right_republican_platforms         <dbl> NA, NA, NA, NA,…
#> $ pct_combined_communist_and_other_lw_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_combined_left_wing_republican_platforms            <dbl> NA, NA, NA, NA,…
#> $ pct_combined_other                                     <dbl> 0.59, 0.62, 0.2…
#> $ pct_combined_right_wing_regionalist_platforms          <dbl> NA, NA, NA, NA,…
#> $ pct_combined_right_wing_platforms                      <dbl> NA, NA, NA, NA,…
#> $ pct_combined_socialist_platforms                       <dbl> NA, NA, NA, NA,…
#> $ pct_combined_blank_and_null                            <dbl> NA, NA, NA, NA,…
#> $ pct_combined_left_wing_republican_socialist_coalition  <dbl> NA, NA, NA, NA,…
#> $ pct_combined_left_wing_regionalist_platforms           <dbl> NA, NA, NA, NA,…
#> $ pct_combined_otros                                     <dbl> NA, NA, NA, NA,…
#> $ pct_combined_basque_nat_coal                           <dbl> NA, NA, NA, NA,…
#> $ pct_combined_left_coalition                            <dbl> 60.92, 51.33, 6…
#> $ pct_combined_right_coalition                           <dbl> 38.49, 48.05, 3…
#> $ pct_combined_centrist_platforms                        <dbl> 0.00, 0.00, 0.0…
#> $ pct_combined_socialist_led_platforms                   <dbl> NA, NA, NA, NA,…
#> $ pct_combined_republican_socialist_coalition            <dbl> NA, NA, NA, NA,…

El objeto tiene una fila por municipio. Las columnas principales incluyen:

Columna Descripción
cod_muni Código INE del municipio
mun Nombre del municipio
district Circunscripción electoral
region Comunidad autónoma
turnout_real Participación observada (0–100)
pct_combined_left_coalition Cuota de voto de la coalición de izquierda (0–100)
pct_combined_right_coalition Cuota de voto de la coalición de derecha (0–100)
first_platform Coalición con mayor cuota de voto

Filtrar por año

data_1936 <- rep_data(year = 1936)
nrow(data_1936)
#> [1] 8853

Con los datos de 1936 podemos observar la distribución de la participación en todos los municipios. Nótese que la participación falta en aquellos municipios cuyos registros electorales aún no se han recuperado.

ggplot(data_1936, aes(x = turnout_real)) +
  geom_histogram(bins = 40, fill = "steelblue", colour = "white", na.rm = TRUE) +
  labs(
    x     = "Participación",
    y     = "Número de municipios",
    title = "Distribución de la participación entre municipios, 1936"
  ) +
  theme_minimal()

Filtrar por distrito

barcelona <- rep_data(district = "Barcelona_capital")
select(barcelona, mun, turnout_real,
       pct_combined_left_coalition, pct_combined_right_coalition,
       first_platform)
#> # A tibble: 4 × 5
#>   mun                 turnout_real pct_combined_left_co…¹ pct_combined_right_c…²
#>   <chr>                      <dbl>                  <dbl>                  <dbl>
#> 1 Sant Adrià de Besòs         NA                     74.3                   25.6
#> 2 Santa Coloma de Gr…         NA                     75.6                   24.3
#> 3 Badalona                    NA                     66.2                   33.8
#> 4 Barcelona                   67.8                   62.6                   37.3
#> # ℹ abbreviated names: ¹​pct_combined_left_coalition,
#> #   ²​pct_combined_right_coalition
#> # ℹ 1 more variable: first_platform <chr>

El distrito Barcelona_capital comprendía cuatro municipios. Podemos comparar las cuotas de voto de las dos principales coaliciones lado a lado:

barcelona_long <- bind_rows(
  mutate(barcelona, coalition = "Izquierda", pct = pct_combined_left_coalition),
  mutate(barcelona, coalition = "Derecha",   pct = pct_combined_right_coalition)
)

ggplot(barcelona_long, aes(x = reorder(mun, pct), y = pct, fill = coalition)) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c(Izquierda = "#d73027", Derecha = "#4575b4")) +
  scale_y_continuous(labels = function(x) paste0(round(x), "%")) +
  coord_flip() +
  labs(
    x     = NULL,
    y     = "Cuota de voto",
    fill  = NULL,
    title = "Cuotas de voto de las coaliciones en el distrito de Barcelona capital, 1936"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

Filtrar por comunidad autónoma

catalonia <- rep_data(region = "Cataluña")
nrow(catalonia)
#> [1] 1059
count(catalonia, first_platform)
#> # A tibble: 4 × 2
#>   first_platform      n
#>   <chr>           <int>
#> 1 blank_and_null      1
#> 2 left_coalition    617
#> 3 right_coalition   439
#> 4 <NA>                2

Flujos de trabajo con el operador pipe

rep_data() devuelve un tibble estándar, por lo que se integra de forma natural con dplyr y el operador pipe nativo:

rep_data(year = 1936) |>
  filter(turnout_real > 75) |>
  select(mun, district, region, turnout_real) |>
  arrange(desc(turnout_real)) |>
  head(10)
#> # A tibble: 10 × 4
#>    mun                     district         region                 turnout_real
#>    <chr>                   <chr>            <chr>                         <dbl>
#>  1 Valdeavero              Madrid_provincia Madrid (Comunidad de )          100
#>  2 Santa Eulalia Bajera    Logroño          Rioja (La)                      100
#>  3 Canejan                 Lleida           Cataluña                        100
#>  4 Sarroca de Segre        Lleida           Cataluña                        100
#>  5 Alcanó                  Lleida           Cataluña                        100
#>  6 Sant Pere dels Arquells Lleida           Cataluña                        100
#>  7 Abella de la Conca      Lleida           Cataluña                        100
#>  8 Villanueva la Condesa   Valladolid       Castilla y León                 100
#>  9 Pías                    Zamora           Castilla y León                 100
#> 10 Otero de Centenos       Zamora           Castilla y León                 100

Validación geográfica

Si se proporciona una combinación de distrito y comunidad autónoma incoherente, el paquete genera un error informativo:

rep_data(district = "Sevilla_capital", region = "Cataluña")
#> Error in `rep_validate_district_region()`:
#> ! District "Sevilla_capital" does not belong to region "Cataluña".

Datos espaciales y mapas

Con geometry = TRUE se obtiene un objeto sf con los polígonos municipales ya unidos a los datos electorales, sin necesidad de cargar manualmente ningún shapefile.

map_data <- rep_data(year = 1936, geometry = TRUE)
class(map_data)
#> [1] "sf"         "data.frame"
dim(map_data)   # filas = municipios, columnas = variables + geometría
#> [1] 8853  130

El objeto sf se puede pasar directamente a rep_plot() para obtener un mapa coroplético listo para publicar. Los municipios sin datos aparecen en gris; cuando la ausencia de datos se concentra en una zona, esa mancha gris puede dar la impresión de que el shapefile está recortado en lugar de simplemente carecer de valores ahí. Con district_borders = TRUE se superponen los contornos de los distritos electorales (correspondientes al año de los datos) como referencia visual, de modo que quede claro que esa zona forma parte del mapa. Aquí representamos la cuota de voto de la coalición de izquierda en todos los municipios:

rep_plot(
  map_data,
  variable         = "pct_combined_left_coalition",
  title            = "Cuota de voto de la coalición de izquierda, 1936",
  district_borders = TRUE
)

También podemos representar first_platform — la coalición más votada en cada municipio — para ver de un vistazo la división geográfica:

rep_plot(
  map_data,
  variable         = "first_platform",
  title            = "Coalición ganadora por municipio, 1936",
  district_borders = TRUE
) +
  scale_fill_manual(
    values = c(
      left_coalition      = "#c0392b",
      right_coalition     = "#2980b9",
      centrist_platforms  = "#e67e22",
      basque_nat_coal     = "#27ae60",
      other               = "#8e44ad",
      `No data`           = "grey85"
    ),
    labels = c(
      left_coalition      = "Coalición de izquierda",
      right_coalition     = "Coalición de derecha",
      centrist_platforms  = "Centrista",
      basque_nat_coal     = "Nacionalista vasca",
      other               = "Otros",
      `No data`           = "Sin datos"
    )
  )
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.

El filtrado espacial funciona igual que el filtrado tabular. Aquí nos centramos en Cataluña y representamos la participación; district_borders = TRUE mantiene el mapa correctamente centrado en Cataluña en lugar de volver a mostrar toda España:

rep_data(year = 1936, region = "Cataluña", geometry = TRUE) |>
  rep_plot(
    variable         = "turnout_real",
    title            = "Participación en Cataluña, 1936",
    district_borders = TRUE
  )

Como rep_plot() devuelve un objeto ggplot, se puede ampliar con cualquier capa de ggplot2:

rep_plot(
  map_data,
  variable         = "turnout_real",
  title            = "Participación, 1936",
  district_borders = TRUE
) +
  theme_void() +
  theme(legend.position = "bottom")

Datos a nivel de distrito

Además de los resultados a nivel municipal, el paquete incluye las cuotas de voto de cada distrito electoral (circunscripción). Es el único nivel en el que están disponibles los datos de 1931 y 1933, ya que los resultados a nivel municipal solo están disponibles actualmente para 1936.

dist_1931 <- rep_data(year = 1931, level = "district")
glimpse(dist_1931)
#> Rows: 63
#> Columns: 90
#> $ region                                                      <chr> "Comunitat…
#> $ cod_ccaa                                                    <dbl> 10, 8, 1, …
#> $ prov                                                        <chr> "Alicante/…
#> $ cod_prov                                                    <chr> "03", "02"…
#> $ year                                                        <dbl> 1931, 1931…
#> $ date                                                        <date> 1931-06-2…
#> $ election_round                                              <dbl> 1, 1, 1, 1…
#> $ district                                                    <chr> "Alicante"…
#> $ total_seats                                                 <dbl> 11, 7, 7, …
#> $ majority_seats                                              <dbl> 8, 5, 5, 1…
#> $ elect                                                       <dbl> 159932, 86…
#> $ votant                                                      <dbl> 111186, 62…
#> $ turnout                                                     <dbl> 69.52, 71.…
#> $ total_votes                                                 <dbl> 839236, 28…
#> $ data_source                                                 <chr> "Credentia…
#> $ sum_votes_left_wing_republican_socialist_coalition          <dbl> 507108, NA…
#> $ sum_votes_right_wing_platforms                              <dbl> NA, 19143,…
#> $ sum_votes_right_wing_regionalist_platforms                  <dbl> NA, NA, NA…
#> $ sum_votes_broad_republican_socialist_coalition              <dbl> NA, 216962…
#> $ sum_votes_center_right_republican_platforms                 <dbl> 237769, 28…
#> $ sum_votes_left_wing_republican_platforms                    <dbl> 46254, 232…
#> $ sum_votes_other                                             <dbl> 48105, 387…
#> $ sum_votes_socialist_platforms                               <dbl> NA, NA, 61…
#> $ sum_votes_communist_and_other_lw_platforms                  <dbl> NA, NA, NA…
#> $ sum_votes_left_wing_regionalist_platforms                   <dbl> NA, NA, NA…
#> $ sum_votes_otros                                             <dbl> NA, NA, NA…
#> $ sum_votes_basque_nat_coal                                   <dbl> NA, NA, NA…
#> $ sum_votes_left_coalition                                    <dbl> NA, NA, NA…
#> $ sum_votes_right_coalition                                   <dbl> NA, NA, NA…
#> $ sum_votes_centrist_platforms                                <dbl> NA, NA, NA…
#> $ mean_votes_left_wing_republican_socialist_coalition         <dbl> 63388.50, …
#> $ mean_votes_right_wing_platforms                             <dbl> NA, 6381.0…
#> $ mean_votes_right_wing_regionalist_platforms                 <dbl> NA, NA, NA…
#> $ mean_votes_broad_republican_socialist_coalition             <dbl> NA, 43392.…
#> $ mean_votes_center_right_republican_platforms                <dbl> 29721.12, …
#> $ mean_votes_left_wing_republican_platforms                   <dbl> 11563.50, …
#> $ mean_votes_other                                            <dbl> 8017.50, 3…
#> $ mean_votes_socialist_platforms                              <dbl> NA, NA, 12…
#> $ mean_votes_communist_and_other_lw_platforms                 <dbl> NA, NA, NA…
#> $ mean_votes_left_wing_regionalist_platforms                  <dbl> NA, NA, NA…
#> $ mean_votes_otros                                            <dbl> NA, NA, NA…
#> $ mean_votes_basque_nat_coal                                  <dbl> NA, NA, NA…
#> $ mean_votes_left_coalition                                   <dbl> NA, NA, NA…
#> $ mean_votes_right_coalition                                  <dbl> NA, NA, NA…
#> $ mean_votes_centrist_platforms                               <dbl> NA, NA, NA…
#> $ pct_sumbased_left_wing_republican_socialist_coalition       <dbl> 60.42, NA,…
#> $ pct_sumbased_right_wing_platforms                           <dbl> NA, 6.65, …
#> $ pct_sumbased_right_wing_regionalist_platforms               <dbl> NA, NA, NA…
#> $ pct_sumbased_broad_republican_socialist_coalition           <dbl> NA, 75.33,…
#> $ pct_sumbased_center_right_republican_platforms              <dbl> 28.33, 9.8…
#> $ pct_sumbased_left_wing_republican_platforms                 <dbl> 5.51, 8.06…
#> $ pct_sumbased_other                                          <dbl> 5.73, 0.13…
#> $ pct_sumbased_socialist_platforms                            <dbl> NA, NA, 23…
#> $ pct_sumbased_communist_and_other_lw_platforms               <dbl> NA, NA, NA…
#> $ pct_sumbased_left_wing_regionalist_platforms                <dbl> NA, NA, NA…
#> $ pct_sumbased_otros                                          <dbl> NA, NA, NA…
#> $ pct_sumbased_basque_nat_coal                                <dbl> NA, NA, NA…
#> $ pct_sumbased_left_coalition                                 <dbl> NA, NA, NA…
#> $ pct_sumbased_right_coalition                                <dbl> NA, NA, NA…
#> $ pct_sumbased_centrist_platforms                             <dbl> NA, NA, NA…
#> $ pct_meanbased_left_wing_republican_socialist_coalition      <dbl> 57.01, NA,…
#> $ pct_meanbased_right_wing_platforms                          <dbl> NA, 10.28,…
#> $ pct_meanbased_right_wing_regionalist_platforms              <dbl> NA, NA, NA…
#> $ pct_meanbased_broad_republican_socialist_coalition          <dbl> NA, 69.89,…
#> $ pct_meanbased_center_right_republican_platforms             <dbl> 26.73, 9.1…
#> $ pct_meanbased_left_wing_republican_platforms                <dbl> 10.40, 18.…
#> $ pct_meanbased_other                                         <dbl> 7.21, 0.62…
#> $ pct_meanbased_socialist_platforms                           <dbl> NA, NA, 21…
#> $ pct_meanbased_communist_and_other_lw_platforms              <dbl> NA, NA, NA…
#> $ pct_meanbased_left_wing_regionalist_platforms               <dbl> NA, NA, NA…
#> $ pct_meanbased_otros                                         <dbl> NA, NA, NA…
#> $ pct_meanbased_basque_nat_coal                               <dbl> NA, NA, NA…
#> $ pct_meanbased_left_coalition                                <dbl> NA, NA, NA…
#> $ pct_meanbased_right_coalition                               <dbl> NA, NA, NA…
#> $ pct_meanbased_centrist_platforms                            <dbl> NA, NA, NA…
#> $ elected_candidates_left_wing_republican_socialist_coalition <dbl> 8, NA, NA,…
#> $ elected_candidates_right_wing_platforms                     <dbl> NA, 0, 0, …
#> $ elected_candidates_right_wing_regionalist_platforms         <dbl> NA, NA, NA…
#> $ elected_candidates_broad_republican_socialist_coalition     <dbl> NA, 5, NA,…
#> $ elected_candidates_center_right_republican_platforms        <dbl> 3, 0, 1, N…
#> $ elected_candidates_left_wing_republican_platforms           <dbl> 0, 1, 4, N…
#> $ elected_candidates_other                                    <dbl> 0, 0, 0, N…
#> $ elected_candidates_socialist_platforms                      <dbl> NA, NA, 2,…
#> $ elected_candidates_communist_and_other_lw_platforms         <dbl> NA, NA, NA…
#> $ elected_candidates_left_wing_regionalist_platforms          <dbl> NA, NA, NA…
#> $ elected_candidates_otros                                    <dbl> NA, NA, NA…
#> $ elected_candidates_basque_nat_coal                          <dbl> NA, NA, NA…
#> $ elected_candidates_left_coalition                           <dbl> NA, NA, NA…
#> $ elected_candidates_right_coalition                          <dbl> NA, NA, NA…
#> $ elected_candidates_centrist_platforms                       <dbl> NA, NA, NA…

Las columnas de cuotas de voto a nivel de distrito siguen la misma convención de nomenclatura <estadístico>_<plataforma> que a nivel municipal, pero usan pct_sumbased_<plataforma> en lugar de pct_combined_<plataforma> (no existe la variante pct_original/ pct_combined a nivel de distrito):

dist_1931 |>
  select(district, starts_with("pct_sumbased_")) |>
  pivot_longer(starts_with("pct_sumbased_"), names_prefix = "pct_sumbased_",
               names_to = "platform", values_to = "pct") |>
  filter(!is.na(pct), pct > 0) |>
  ggplot(aes(x = reorder(district, pct, FUN = max), y = pct, fill = platform)) +
  geom_col() +
  coord_flip() +
  labs(x = NULL, y = "Cuota de voto", fill = "Plataforma",
       title = "Cuotas de voto por distrito, 1931") +
  theme_minimal() +
  theme(legend.position = "bottom", axis.text.y = element_text(size = 5))

Con geometry = TRUE se obtienen los polígonos de los distritos para representarlos en un mapa, igual que a nivel municipal:

dist_1931_map <- rep_data(year = 1931, level = "district", geometry = TRUE)

rep_plot(
  dist_1931_map,
  variable = "pct_sumbased_broad_republican_socialist_coalition",
  title    = "Cuota de voto de la coalición republicano-socialista por distrito, 1931"
)

Para un análisis más detallado, detail = "candidates" devuelve una fila por candidato individual (sin geometría, ya que un mapa coroplético necesita un único valor por polígono):

candidates_1936 <- rep_data(year = 1936, level = "district", detail = "candidates")
candidates_1936 |>
  filter(district == "Barcelona_provincia") |>
  select(full_cand_name, party_short, platform_summ, votes, elected_status) |>
  arrange(desc(votes)) |>
  head(10)
#> # A tibble: 10 × 5
#>    full_cand_name           party_short platform_summ   votes elected_status    
#>    <chr>                    <chr>       <chr>           <dbl> <chr>             
#>  1 Juan Lluhí Vallescá      PNRE        left_coalition 196613 elected_first_rou…
#>  2 Eduardo Ragasol Serrá    ACR         left_coalition 196326 elected_first_rou…
#>  3 José Tomás Piera         ERC         left_coalition 196057 elected_first_rou…
#>  4 Pedro Mestres Albet      ERC         left_coalition 196028 elected_first_rou…
#>  5 Francisco Senyal Ferrer  ERC         left_coalition 195906 elected_first_rou…
#>  6 Domingo Palet Barba      ERC         left_coalition 195880 elected_first_rou…
#>  7 José Antonio Trabal Sans ERC         left_coalition 195680 elected_first_rou…
#>  8 Pablo Padró Canyellas    II          left_coalition 195423 elected_first_rou…
#>  9 José Calvet Mora         II          left_coalition 195319 elected_first_rou…
#> 10 Jaime Comas Jo           USC         left_coalition 194986 elected_first_rou…

Datos de referéndums

Además de los resultados electorales, el paquete incluye datos de referéndums. El referéndum disponible es el del Estatuto de Autonomía de Galicia de 1936, que cubre 335 municipios de A Coruña, Lugo, Ourense y Pontevedra.

Se utiliza type = "referendum" para acceder a él:

ref <- rep_data(year = 1936, type = "referendum")
glimpse(ref)
#> Rows: 335
#> Columns: 9
#> $ cod_muni     <chr> "15001", "15002", "15003", "15004", "15005", "15006", "15…
#> $ municipality <chr> "Abegondo", "Ames", "Aranga", "Ares", "Arteijo", "Arzua",…
#> $ province     <chr> "A Coruña", "A Coruña", "A Coruña", "A Coruña", "A Coruña…
#> $ region       <chr> "Galicia", "Galicia", "Galicia", "Galicia", "Galicia", "G…
#> $ year         <int> 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 193…
#> $ perc_ayes    <dbl> NA, 100.00, 99.05, 99.92, 98.90, NA, NA, 99.66, 100.00, N…
#> $ perc_nay     <dbl> NA, 0.00, 0.95, 0.08, 1.10, NA, NA, 0.17, 0.00, NA, NA, 0…
#> $ perc_blank   <dbl> NA, 0.00, 0.00, 0.00, 0.00, NA, NA, 0.17, 0.00, NA, NA, 0…
#> $ perc_turnout <dbl> NA, 93.41, 89.00, 92.71, 88.26, NA, NA, 43.27, 70.65, NA,…

Las columnas principales difieren de los datos electorales:

Columna Descripción
cod_muni Código INE del municipio
municipality Nombre del municipio
province Provincia (A Coruña, Lugo, Ourense, Pontevedra)
region Comunidad autónoma ("Galicia")
perc_ayes Porcentaje a favor
perc_nay Porcentaje en contra
perc_blank Porcentaje de votos en blanco
perc_turnout Porcentaje de participación

El resultado fue un respaldo abrumador al estatuto. Podemos observar la distribución del apoyo entre los municipios:

ggplot(ref, aes(x = perc_ayes)) +
  geom_histogram(bins = 30, fill = "#27ae60", colour = "white", na.rm = TRUE) +
  labs(
    x     = "% de votos a favor",
    y     = "Número de municipios",
    title = "Apoyo al Estatuto de Galicia por municipio, 1936"
  ) +
  theme_minimal()

Los datos de referéndums también admiten geometry = TRUE. 21 de los 335 municipios no tienen geometría incluida (anexionados por un municipio vecino antes de 1936, creados después de 1936, o no resolubles de otro modo a un polígono del shapefile de 1930), por lo que se excluyen del mapa pero se mantienen en los datos tabulares:

ref_map <- rep_data(year = 1936, type = "referendum", geometry = TRUE)

rep_plot(
  ref_map,
  variable         = "perc_ayes",
  title            = "Apoyo al Estatuto de Galicia, 1936",
  district_borders = TRUE
)

Cita

Si utiliza este paquete en su investigación, cite tanto el paquete como el Atlas Electoral de la Segunda República Española:

citation("spain2Rep")

El proyecto del Atlas Electoral está documentado en https://www.tonirodon.cat/second-republic-atlas/en/.