Codi edat dels edificis per secció censals

2020-12-01
2 min read

Volem agafar les dades d’edat mitjana dels edificis segons el cadastre per secció censal i comparar-ho amb resultats electorals.

Importem llibreries necessàries

library(tidyverse)
library(lubridate)
library(stringi)
library(readxl)

Dades electorals

Importem les dades electorals des del portal de transperència de la Generalitat i les transformem segons la necessitat.

# Eleccions al Parlament de Catalunya 2021 - Recompte provisional per mesa
meses <- read.csv('https://analisi.transparenciacatalunya.cat/api/views/ix2p-vyw4/rows.csv?accessType=DOWNLOAD&sorting=true',as.is = TRUE, encoding = 'UTF-8') %>% 
  as_tibble()

seccions <- meses %>% 
  gather('partit','vots', -colnames(meses)[1:21]) %>% 
  filter(
    str_detect(partit, 'Vots'),
    vots > 0
    ) %>% 
  mutate(
    partit = str_remove(partit,'Vots.')
    ) %>% 
  select(-contains('X..')) %>% 
  relocate(partit) %>% 
  select(-Mesa) %>% 
  group_by(
    partit,
    Codi.circumscripció,
    Codi.municipi,
    Nom.municipi,
    Codi.comarca,
    Nom.comarca,
    Districte,
    Secció
  ) %>% 
  summarise_all(funs(sum)) %>% 
  ungroup() %>% 
  mutate(
    vots.per = vots/Vots.vàlids*100,
    codi.seccio = paste0(
      sprintf("%02d", Codi.circumscripció),
      sprintf("%03d", Codi.municipi),
      sprintf("%02d", Districte),
      sprintf("%03d", Secció)
    )
  ) %>% 
  filter(
    !partit == "ALIANZA.POR.EL.COMERCIO.Y.LA.VIVIENDA..ALIANZA.C.V." &
    !partit == "ESCONS.EN.BLANC..ESCAÑOS.EN.BLANCO...EB." &
    !partit == "FRONT.NACIONAL.DE.CATALUNYA..FNC." &
    !partit == "IZQUIERDA.EN.POSITIVO..IZQP." &
    !partit == "MOVIMENT.CORRENT.ROIG..M.C.R.." &
    !partit == "MOVIMENT.PRIMÀRIES.PER.LA.INDEPENDÈNCIA.DE.CATALUNYA..MPIC." &
    !partit == "PARTIT.COMUNISTA.DELS.TREBALLADORS.DE.CATALUNYA..PCTC." &
    !partit == "PARTIT.NACIONALISTA.DE.CATALUNYA..PNC." &
    !partit == "PER.UN.MÓN.MÉS.JUST..PUM.J." &
    !partit == "RECORTES.CERO.GRUP.VERD.MUNICIPALISTES..RECORTES.CERO.GV.M." &
    !partit == "SUPORT.CIVIL.CATALÀ..SCAT." &
    !partit == "SOM.TERRES.DE.L.EBRE..SOM.TERRES.DE.L.EBRE." &
    !partit == "UNIDOS.POR.LA.DEMOCRACIA...JUBILADOS..UNIDOS.SI...DEf...PDSJE...SOMOS.ESPAÑA." &
    !partit == "UNIÓN.EUROPEA.DE.PENSIONISTAS..UEP."
  ) %>% 
  mutate(
    partit = ifelse(partit == "CANDIDATURA.D.UNITAT.POPULAR.UN.NOU.CICLE.PER.GUANYAR..CUP.G.",'CUP',partit),
    partit = ifelse(partit == "CIUTADANS...PARTIDO.DE.LA.CIUDADANÍA..Cs.",'Cs',partit),
    partit = ifelse(partit == "EN.COMÚ.PODEM.PODEM.EN.COMÚ..ECP.PEC.",'ECP',partit),
    partit = ifelse(partit == "ESQUERRA.REPUBLICANA.DE.CATALUNYA..ERC.",'ERC',partit),
    partit = ifelse(partit == "JUNTS.PER.CATALUNYA..JxCat.",'JxCat',partit),
    partit = ifelse(partit == "PARTIT.DELS.SOCIALISTES.DE.CATALUNYA..PSC.PSOE...PSC.",'PSC',partit),
    partit = ifelse(partit == "PARTIT.DEMÒCRATA.EUROPEU.CATALÀ..PDeCAT.",'PDeCAT',partit),
    partit = ifelse(partit == "PARTIT.POPULAR.PARTIDO.POPULAR..PP.",'PP',partit),
    partit = ifelse(partit == "VOX..VOX.",'VOX',partit)
  )

Dades cadastre per secció censal

Importem les dades d’edat dels edificis per secció censal. Les pots trobar a l’apartat ‘dades’.

buildings.bcn <- read_excel("C:/Users/catbr/MEGA/scripts/cadastre_mapa/mapa_buildings_cadastre/barcelona_age_building_seccions_censals.xlsx") %>% 
  transmute(codi.seccio = str_replace(MUNDISSEC,'^080193','08019'), build.age = MEAN_ConstAny) # cutrada per arreglar el codi.seccio

Unifiquem les dades

Unifiquem les dues bases de dades i limitem la dispersió.

seccions <- seccions %>% 
  left_join(buildings.bcn) %>% 
  filter(!is.na(build.age)) %>% 
  mutate(build.age.1900 = ifelse(build.age < 1900, 1900, build.age))

Grafiquem la comparació

seccions %>% 
  ggplot(aes(build.age.1900,vots.per, fill = partit)) +
  geom_point(alpha = 0.5, aes(colour = partit)) +
  geom_smooth(method = ) +
  facet_wrap(~partit, scales = 'free') +
  theme_linedraw() +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'), plot.subtitle = element_text(hjust = 0.5)) +
  labs(title = "Distribució de vot per edat de l'edifici",
       subtitle = 'Any de contrucció mitjà per secció censal a Barcelona 14F',
       caption = 'Font: Catastro INSPIRE | @rogersanjaume') +
  xlab('Any de construcció') +
  ylab('Percentatge de votants') +
  scale_x_continuous(breaks = seq(1900, 2020, by = 10)) +
  scale_fill_manual(values=c("#EB6109", "#ffed00", "#6e236e", "#FBD30A", "#00C7AE", "#0082ca", "#17589D", "#d1081c", "#7CBD2A")) +
  scale_color_manual(values=c("#EB6109", "#ffed00", "#6e236e", "#FBD30A", "#00C7AE", "#0082ca", "#17589D", "#d1081c", "#7CBD2A")) +
  theme(legend.position = "none")