Мне удалось создать этот ужасный код
library(tidyverse)
library(xml2)
library(rvest)
x <- read_xml("https://elections.interieur.gouv.fr/telechargements/MUNICIPALES2020/candidatureT1/001/C1001.xml")
x <- x %>% xml_find_all('//Commune')
x <- as_list(x)
tbl <- tibble(Communes=x)
communes <- tbl %>% unnest_wider(Communes) %>%
unnest_longer(CodSubCom) %>%
unnest_longer(LibSubCom) %>%
unnest_longer(TypCom) %>%
unnest_longer(PopSubCom) %>%
unnest_longer(ModeScrutin) %>%
unnest_longer(NbSAP) %>%
unnest_longer(EPCI) %>%
unnest_longer(NbSapEpci) %>%
hoist(CandidatsMaj,NbCandidatsMaj="NbCandidatsMaj") %>% unnest_longer(NbCandidatsMaj) %>%
hoist(CandidatsMaj,NbSapMajRestant="NbSapMajRestant") %>% unnest_longer(NbSapMajRestant) %>%
hoist(CandidatsMaj,candidats=c("ListeCandidatsMaj")) %>% unnest_longer(candidats) %>%
hoist(candidats,NomPsn="NomPsn",PrePsn="PrePsn",CivilitePsn="CivilitePsn") %>% unnest_longer(NomPsn) %>%
unnest_longer(PrePsn) %>% unnest_longer(CivilitePsn)
communes <- communes %>%
unnest_longer(Listes) %>%
hoist(Listes,NumListe="NumListe",CodNuaListe="CodNuaListe",NomListe="NomListe",LibLisExt="LibLisExt") %>%
unnest_longer(NumListe) %>% unnest_longer(CodNuaListe) %>% unnest_longer(NomListe) %>% unnest_longer(LibLisExt) %>%
hoist(Listes,candidats_liste="CandidatsListe") %>% unnest_longer(candidats_liste) %>%
hoist(candidats_liste,NumOrdCand="NumOrdCand",
NomPsnL="NomPsn",PrePsnL="PrePsn",CivilitePsnL="CivilitePsn",TeteListe="TeteListe",CandidatEPCI="CandidatEPCI") %>%
unnest_longer(NumOrdCand) %>%
unnest_longer(NomPsnL) %>% unnest_longer(PrePsnL) %>% unnest_longer(CivilitePsnL) %>%
unnest_longer(TeteListe) %>% unnest_longer(CandidatEPCI)
communes <- communes %>%
mutate(NomPsn = case_when(is.na(NomPsn) ~NomPsnL,
TRUE ~ NomPsn) ,
PrePsn = case_when(is.na(PrePsn) ~ PrePsnL,
TRUE ~ PrePsn),
CivilitePsn = case_when(is.na(CivilitePsn) ~ CivilitePsnL,
TRUE ~ CivilitePsn) )
communes <- communes %>%
select(-candidats,-candidats_id,-CandidatsMaj,-candidats_liste,-candidats_liste_id,-Listes,-Listes_id,
-NomPsnL,-PrePsnL,-CivilitePsnL)