Last active
September 2, 2022 21:40
-
-
Save vi-enne/dfe0ca21e9470c476b9413f714e1846c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(tmaptools) | |
library(sf) | |
library(tidyr) | |
library(stringr) | |
# Fonti: | |
# Basi geografiche ISTAT (da scaricare): https://www.istat.it/it/archivio/273443 | |
# Liste candidati Ministero dell'Interno: https://dait.interno.gov.it/elezioni/trasparenza/elezioni-politiche-2022 | |
# Estratte da onData: https://github.com/ondata/elezioni-politiche-2022/tree/main/liste | |
indirizzo <- "Piazza di Monte Citorio, 00186 Roma RM, Italy" | |
# Inizio ---- | |
if (!exists("cam_trans")) { | |
# Carica dati ---- | |
file_path_sen <- | |
"Collegi_Elettorali_BasiGeografiche\\SENATO_CollegiUNINOMINALI_2020\\SENATO_CollegiUNINOMINALI_2020.shp" | |
sen_shp <- st_read(file_path_sen) | |
file_path_cam <- | |
"Collegi_Elettorali_BasiGeografiche\\CAMERA_CollegiUNINOMINALI_2020\\CAMERA_CollegiUNINOMINALI_2020.shp" | |
cam_shp <- st_read(file_path_cam) | |
cam_uni <- | |
read.csv( | |
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/CAMERA_ITALIA_20220925_uni.csv", | |
encoding = "UTF-8" | |
) | |
cam_uni_coal <- | |
read.csv( | |
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/CAMERA_ITALIA_20220925_uni_coalizioni.csv", | |
encoding = "UTF-8" | |
) | |
cam_uni_coal$desc_lista[cam_uni_coal$desc_lista %in% | |
c( | |
"ALLEANZA VERDI E SINISTRA", | |
"+EUROPA", | |
"IMPEGNO CIVICO LUIGI DI MAIO - CENTRO DEMOCRATICO", | |
"PARTITO DEMOCRATICO - ITALIA DEMOCRATICA E PROGRESSISTA" | |
)] = "CENTROSINISTRA" | |
cam_uni_coal$desc_lista[cam_uni_coal$desc_lista %in% | |
c( | |
"FORZA ITALIA", | |
"FRATELLI D'ITALIA CON GIORGIA MELONI", | |
"NOI MODERATI/LUPI - TOTI - BRUGNARO - UDC", | |
"LEGA PER SALVINI PREMIER" | |
)] = "CENTRODESTRA" | |
cam_uni <- merge(cam_uni, cam_uni_coal) | |
cam_uni$Candidato <- | |
str_to_title(paste(cam_uni$cogn_c, cam_uni$nome_c)) | |
candidatiCam <- | |
unique(cam_uni[, c("desc_ente", "desc_lista", "Candidato")]) | |
colnames(candidatiCam) <- c("Seggio", "Lista", "Candidato") | |
candidatiCam <- | |
spread(candidatiCam, key = Lista, value = Candidato) | |
sen_uni <- | |
read.csv( | |
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/SENATO_ITALIA_20220925_uni.csv", | |
encoding = "UTF-8" | |
) | |
sen_uni_coal <- | |
read.csv( | |
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/SENATO_ITALIA_20220925_uni_coalizioni.csv", | |
encoding = "UTF-8" | |
) | |
sen_uni_coal$desc_lista[sen_uni_coal$desc_lista %in% | |
c( | |
"ALLEANZA VERDI E SINISTRA", | |
"+EUROPA", | |
"IMPEGNO CIVICO LUIGI DI MAIO - CENTRO DEMOCRATICO", | |
"PARTITO DEMOCRATICO - ITALIA DEMOCRATICA E PROGRESSISTA" | |
)] = "CENTROSINISTRA" | |
sen_uni_coal$desc_lista[sen_uni_coal$cod_cand %in% c(1350896, 1350905)] <- | |
"ALLEANZA VERDI E SINISTRA" | |
sen_uni_coal$desc_lista[sen_uni_coal$cod_cand %in% c(1352725, 1352734)] <- | |
"PARTITO DEMOCRATICO" | |
sen_uni_coal$desc_lista[sen_uni_coal$desc_lista %in% | |
c( | |
"FORZA ITALIA", | |
"FRATELLI D'ITALIA CON GIORGIA MELONI", | |
"NOI MODERATI/LUPI - TOTI - BRUGNARO - UDC", | |
"LEGA PER SALVINI PREMIER" | |
)] = "CENTRODESTRA" | |
sen_uni <- merge(sen_uni, sen_uni_coal) | |
sen_uni$Candidato <- | |
str_to_title(paste(sen_uni$cogn_c, sen_uni$nome_c)) | |
candidatiSen <- | |
unique(sen_uni[, c("desc_ente", "desc_lista", "Candidato")]) | |
colnames(candidatiSen) <- c("Seggio", "Lista", "Candidato") | |
candidatiSen <- | |
spread(candidatiSen, key = Lista, value = Candidato) | |
sen_shp$SU20_DEN <- toupper(sen_shp$SU20_DEN) | |
cam_shp$CU20_DEN <- toupper(cam_shp$CU20_DEN) | |
sen_trans <- st_transform(sen_shp, 2163) | |
cam_trans <- st_transform(cam_shp, 2163) | |
} | |
# Ricerca indirizzo ---- | |
tryCatch( | |
expr = { | |
pnts <- as.data.frame(t(geocode_OSM(indirizzo)$coords)) | |
}, | |
error = function(e) { | |
pnts <- data.frame(x = 0, y = 0) | |
} | |
) | |
pnts_sf <- st_as_sf(pnts, coords = c('x', 'y'), crs = st_crs(4326)) | |
pnts_trans <- st_transform(pnts_sf, 2163) | |
col_sen <- | |
sen_shp$SU20_DEN[as.integer(st_intersects(pnts_trans, sen_trans))] | |
if (is.na(col_sen)) { | |
out_sen <- "Indirizzo non trovato" | |
} else{ | |
out_sen <- cbind(Dove = "Senato", | |
candidatiSen[candidatiSen$Seggio == col_sen, ]) | |
out_sen <- t(na.omit(t(out_sen))) | |
} | |
col_cam <- | |
cam_shp$CU20_DEN[as.integer(st_intersects(pnts_trans, cam_trans))] | |
if (is.na(col_cam)) { | |
out_cam <- "Indirizzo non trovato" | |
} else{ | |
out_cam <- cbind(Dove = "Camera dei Deputati", | |
candidatiCam[candidatiCam$Seggio == col_cam, ]) | |
out_cam <- t(na.omit(t(out_cam))) | |
} | |
if (is.na(col_sen)) { | |
out <- "Indirizzo non trovato" | |
} else{ | |
out <- rbind(out_sen, out_cam) | |
} | |
# Salva risultato ---- | |
write.csv(out, | |
file = paste0("candidati_", indirizzo, ".csv"), | |
row.names = F) | |
write.csv(out, file = "candidati.csv", row.names = F) | |
out |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment