Primeiros pasos con spain2Rep

spain2Rep ofrece acceso programático a datos electorais e contextuais do Atlas Electoral da Segunda República Española (1931–1936). O paquete está deseñado para ser sinxelo: unha función principal para cargar e filtrar os datos, e unha función de representación gráfica para crear mapas rapidamente.

Instalación

# Instalar desde GitHub (ata que estea dispoñible en CRAN)
# remotes::install_github("tonirodon/spain2Rep")
library(spain2Rep)
library(dplyr)
library(tidyr)
library(ggplot2)

Que datos hai dispoñibles?

Antes de cargar calquera dato, pódese consultar que anos, distritos e comunidades autónomas cobre actualmente o paquete:

meta <- rep_metadata()
meta$available_years          # anos electorais, por nivel
#> $municipality
#> [1] 1936
#> 
#> $district
#> [1] 1931 1933 1936
meta$available_referendums    # anos de referendos
#> [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 os datos

rep_data() cobre dous niveis xeográficos para os datos electorais, seleccionables mediante o argumento level:

Conxunto de datos completo

rep_data() sen argumentos devolve o conxunto de datos municipal máis recente 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,…

O obxecto ten unha fila por concello. As columnas principais inclúen:

Columna Descrición
cod_muni Código INE do concello
mun Nome do concello
district Circunscrición electoral
region Comunidade autónoma
turnout_real Participación observada (0–100)
pct_combined_left_coalition Cota de voto da coalición de esquerda (0–100)
pct_combined_right_coalition Cota de voto da coalición de dereita (0–100)
first_platform Coalición con maior cota de voto

Filtrar por ano

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

Cos datos de 1936 podemos observar a distribución da participación en todos os concellos. Cómpre notar que a participación falta naqueles concellos cuxos rexistros electorais aínda non se recuperaron.

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 concellos",
    title = "Distribución da participación entre concellos, 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>

O distrito Barcelona_capital comprendía catro concellos. Podemos comparar as cotas de voto das dúas principais coalicións lado a lado:

barcelona_long <- bind_rows(
  mutate(barcelona, coalition = "Esquerda", pct = pct_combined_left_coalition),
  mutate(barcelona, coalition = "Dereita",  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(Esquerda = "#d73027", Dereita = "#4575b4")) +
  scale_y_continuous(labels = function(x) paste0(round(x), "%")) +
  coord_flip() +
  labs(
    x     = NULL,
    y     = "Cota de voto",
    fill  = NULL,
    title = "Cotas de voto das coalicións no distrito de Barcelona capital, 1936"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

Filtrar por comunidade 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

Fluxos de traballo co operador pipe

rep_data() devolve un tibble estándar, polo que se integra de forma natural con dplyr e o 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 xeográfica

Se se fornece unha combinación de distrito e comunidade autónoma incoherente, o paquete xera un erro 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 espaciais e mapas

Con geometry = TRUE obtense un obxecto sf cos polígonos municipais xa unidos aos datos electorais, sen necesidade 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 = concellos, columnas = variables + xeometría
#> [1] 8853  130

O obxecto sf pódese pasar directamente a rep_plot() para obter un mapa coroplético listo para publicar. Os concellos sen datos aparecen en gris; cando a ausencia de datos se concentra nunha zona, esa mancha gris pode dar a impresión de que o shapefile está recortado en lugar de simplemente carecer de valores alí. Con district_borders = TRUE sobreponse os contornos dos distritos electorais (correspondentes ao ano dos datos) como referencia visual, de xeito que quede claro que esa zona forma parte do mapa. Aquí representamos a cota de voto da coalición de esquerda en todos os concellos:

rep_plot(
  map_data,
  variable         = "pct_combined_left_coalition",
  title            = "Cota de voto da coalición de esquerda, 1936",
  district_borders = TRUE
)

Tamén podemos representar first_platform — a coalición máis votada en cada concello — para ver dun vistazo a división xeográfica:

rep_plot(
  map_data,
  variable         = "first_platform",
  title            = "Coalición gañadora por concello, 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 esquerda",
      right_coalition     = "Coalición de dereita",
      centrist_platforms  = "Centrista",
      basque_nat_coal     = "Nacionalista vasca",
      other               = "Outros",
      `No data`           = "Sen datos"
    )
  )
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.

O filtrado espacial funciona igual que o filtrado tabular. Aquí centrámonos en Cataluña e representamos a participación; district_borders = TRUE mantén o 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() devolve un obxecto ggplot, pódese ampliar con calquera 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

Ademais dos resultados a nivel municipal, o paquete inclúe as cotas de voto de cada distrito electoral (circunscripción). É o único nivel no que están dispoñibles os datos de 1931 e 1933, xa que os resultados a nivel municipal só están dispoñibles 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…

As columnas de cotas de voto a nivel de distrito seguen a mesma convención de nomenclatura <estatístico>_<plataforma> que a nivel municipal, pero usan pct_sumbased_<plataforma> en lugar de pct_combined_<plataforma> (non existe a 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 = "Cota de voto", fill = "Plataforma",
       title = "Cotas de voto por distrito, 1931") +
  theme_minimal() +
  theme(legend.position = "bottom", axis.text.y = element_text(size = 5))

Con geometry = TRUE obtéñense os polígonos dos distritos para representalos nun 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    = "Cota de voto da coalición republicano-socialista por distrito, 1931"
)

Para unha análise máis detallada, detail = "candidates" devolve unha fila por candidato individual (sen xeometría, xa que un mapa coroplético precisa 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 referendos

Ademais dos resultados electorais, o paquete inclúe datos de referendos. O referendo dispoñible é o do Estatuto de Autonomía de Galicia de 1936, que cobre 335 concellos da Coruña, Lugo, Ourense e Pontevedra.

Empregase type = "referendum" para acceder a el:

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,…

As columnas principais difiren dos datos electorais:

Columna Descrición
cod_muni Código INE do concello
municipality Nome do concello
province Provincia (A Coruña, Lugo, Ourense, Pontevedra)
region Comunidade autónoma ("Galicia")
perc_ayes Porcentaxe a favor
perc_nay Porcentaxe en contra
perc_blank Porcentaxe de votos en branco
perc_turnout Porcentaxe de participación

O resultado foi un apoio esmagador ao estatuto. Podemos observar a distribución do apoio entre os concellos:

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 concellos",
    title = "Apoio ao Estatuto de Galicia por concello, 1936"
  ) +
  theme_minimal()

Os datos de referendos tamén admiten geometry = TRUE. 21 dos 335 concellos non teñen xeometría asociada (anexionados por un concello veciño antes de 1936, creados despois de 1936, ou non resolubles a un polígono do shapefile de 1930), polo que quedan excluídos do mapa pero mantéñense nos datos tabulares:

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

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

Cita

Se usa este paquete na súa investigación, cite tanto o paquete coma o Atlas Electoral da Segunda República Española:

citation("spain2Rep")

O proxecto do Atlas Electoral está documentado en https://www.tonirodon.cat/second-republic-atlas/en/.