Primers passos amb spain2Rep

spain2Rep ofereix accés programàtic a dades electorals i contextuals de l’Atles Electoral de la Segona República Espanyola (1931–1936). El paquet està dissenyat per ser senzill: una funció principal per carregar i filtrar les dades, i una funció de representació gràfica per crear mapes ràpidament.

Instal·lació

# Instal·lar des de GitHub (fins que estigui disponible a CRAN)
# remotes::install_github("tonirodon/spain2Rep")
library(spain2Rep)
library(dplyr)
library(tidyr)
library(ggplot2)

Quines dades hi ha disponibles?

Abans de carregar cap dada, es pot consultar quins anys, districtes i comunitats autònomes cobreix actualment el paquet:

meta <- rep_metadata()
meta$available_years          # anys electorals, per nivell
#> $municipality
#> [1] 1936
#> 
#> $district
#> [1] 1931 1933 1936
meta$available_referendums    # anys 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)"

Carregar les dades

rep_data() cobreix dos nivells geogràfics per a les dades electorals, seleccionables amb l’argument level:

Conjunt de dades complet

rep_data() sense arguments retorna el conjunt de dades municipal més recent 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,…

L’objecte té una fila per municipi. Les columnes principals inclouen:

Columna Descripció
cod_muni Codi INE del municipi
mun Nom del municipi
district Circumscripció electoral
region Comunitat autònoma
turnout_real Participació observada (0–100)
pct_combined_left_coalition Quota de vot de la coalició d’esquerres (0–100)
pct_combined_right_coalition Quota de vot de la coalició de dretes (0–100)
first_platform Coalició amb més quota de vot

Filtrar per any

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

Amb les dades de 1936 podem observar la distribució de la participació en tots els municipis. Cal notar que la participació falta en aquells municipis els registres electorals dels quals encara no s’han recuperat.

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

Filtrar per districte

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 districte Barcelona_capital comprenia quatre municipis. Podem comparar les quotes de vot de les dues coalicions principals una al costat de l’altra:

barcelona_long <- bind_rows(
  mutate(barcelona, coalition = "Esquerra", pct = pct_combined_left_coalition),
  mutate(barcelona, coalition = "Dreta",    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(Esquerra = "#d73027", Dreta = "#4575b4")) +
  scale_y_continuous(labels = function(x) paste0(round(x), "%")) +
  coord_flip() +
  labs(
    x     = NULL,
    y     = "Quota de vot",
    fill  = NULL,
    title = "Quotes de vot de les coalicions al districte de Barcelona capital, 1936"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

Filtrar per comunitat 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 treball amb l’operador pipe

rep_data() retorna un tibble estàndard, de manera que s’integra de forma natural amb dplyr i l’operador pipe natiu:

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ó geogràfica

Si es proporciona una combinació de districte i comunitat autònoma incoherent, el paquet genera un error informatiu:

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

Dades espacials i mapes

Amb geometry = TRUE s’obté un objecte sf amb els polígons municipals ja units a les dades electorals, sense necessitat de carregar manualment cap shapefile.

map_data <- rep_data(year = 1936, geometry = TRUE)
class(map_data)
#> [1] "sf"         "data.frame"
dim(map_data)   # files = municipis, columnes = variables + geometria
#> [1] 8853  130

L’objecte sf es pot passar directament a rep_plot() per obtenir un mapa coroplètic llest per publicar. Els municipis sense dades apareixen en gris; quan l’absència de dades es concentra en una zona, aquesta taca grisa pot donar la impressió que el shapefile està retallat en lloc de simplement mancar-hi valors. Amb district_borders = TRUE se superposen els contorns dels districtes electorals (corresponents a l’any de les dades) com a referència visual, de manera que quedi clar que aquesta zona forma part del mapa. Aquí representem la quota de vot de la coalició d’esquerres a tots els municipis:

rep_plot(
  map_data,
  variable         = "pct_combined_left_coalition",
  title            = "Quota de vot de la coalició d'esquerres, 1936",
  district_borders = TRUE
)

També podem representar first_platform — la coalició més votada a cada municipi — per veure d’un cop d’ull la divisió geogràfica:

rep_plot(
  map_data,
  variable         = "first_platform",
  title            = "Coalició guanyadora per municipi, 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ó d'esquerres",
      right_coalition     = "Coalició de dretes",
      centrist_platforms  = "Centrista",
      basque_nat_coal     = "Nacionalista basca",
      other               = "Altres",
      `No data`           = "Sense dades"
    )
  )
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.

El filtratge espacial funciona igual que el filtratge tabular. Aquí ens centrem a Catalunya i representem la participació; district_borders = TRUE manté el mapa correctament centrat a Catalunya en lloc de tornar a mostrar tota Espanya:

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

Com que rep_plot() retorna un objecte ggplot, es pot ampliar amb qualsevol capa de ggplot2:

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

Dades a nivell de districte

A més dels resultats a nivell municipal, el paquet inclou les quotes de vot de cada districte electoral (circumscripció). És l’únic nivell en què estan disponibles les dades de 1931 i 1933, ja que els resultats a nivell municipal només estan disponibles actualment per al 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…

Les columnes de quotes de vot a nivell de districte segueixen la mateixa convenció de nomenclatura <estadístic>_<plataforma> que a nivell municipal, però usen pct_sumbased_<plataforma> en lloc de pct_combined_<plataforma> (no existeix la variant pct_original/ pct_combined a nivell de districte):

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 = "Quota de vot", fill = "Plataforma",
       title = "Quotes de vot per districte, 1931") +
  theme_minimal() +
  theme(legend.position = "bottom", axis.text.y = element_text(size = 5))

Amb geometry = TRUE s’obtenen els polígons dels districtes per representar-los en un mapa, igual que a nivell 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    = "Quota de vot de la coalició republicanosocialista per districte, 1931"
)

Per a una anàlisi més detallada, detail = "candidates" retorna una fila per candidat individual (sense geometria, ja que un mapa coroplètic necessita un únic valor per polígon):

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…

Dades de referèndums

A més dels resultats electorals, el paquet inclou dades de referèndums. El referèndum disponible és el de l’Estatut d’Autonomia de Galícia de 1936, que cobreix 335 municipis d’A Coruña, Lugo, Ourense i Pontevedra.

Es fa servir type = "referendum" per accedir-hi:

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

Les columnes principals difereixen de les dades electorals:

Columna Descripció
cod_muni Codi INE del municipi
municipality Nom del municipi
province Província (A Coruña, Lugo, Ourense, Pontevedra)
region Comunitat autònoma ("Galicia")
perc_ayes Percentatge a favor
perc_nay Percentatge en contra
perc_blank Percentatge de vots en blanc
perc_turnout Percentatge de participació

El resultat va ser un suport aclaparador a l’estatut. Podem observar la distribució del suport entre els municipis:

ggplot(ref, aes(x = perc_ayes)) +
  geom_histogram(bins = 30, fill = "#27ae60", colour = "white", na.rm = TRUE) +
  labs(
    x     = "% de vots a favor",
    y     = "Nombre de municipis",
    title = "Suport a l'Estatut de Galícia per municipi, 1936"
  ) +
  theme_minimal()

Les dades de referèndums també admeten geometry = TRUE. 21 dels 335 municipis no tenen geometria associada (annexionats per un municipi veí abans de 1936, creats després de 1936, o no resolubles a un polígon del shapefile de 1930), de manera que queden exclosos del mapa però es mantenen a les dades tabulars:

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

rep_plot(
  ref_map,
  variable         = "perc_ayes",
  title            = "Suport a l'Estatut de Galícia, 1936",
  district_borders = TRUE
)

Citació

Si feu servir aquest paquet en la vostra recerca, citeu tant el paquet com l’Atles Electoral de la Segona República Espanyola:

citation("spain2Rep")

El projecte de l’Atles Electoral està documentat a https://www.tonirodon.cat/second-republic-atlas/en/.