# Sélectionner les colonnes demandéesselected_columns <-c("reg_name", "dep_name", "inscrits_nb", "abstention_nb", "votants_nb", "blancs_nb", "nuls_nb", "exprimes_nb", "cand_nom", "cand_civil", "cand_nb_voix")data_selected <- data %>%select(all_of(selected_columns))# Agréger par région et par nom de candidat (en gardant la civilité)data_aggregated <- data_selected %>%distinct(reg_name, dep_name, cand_nom, .keep_all =TRUE) %>%group_by(reg_name, cand_nom) %>%summarise(inscrits_nb =sum(inscrits_nb, na.rm =TRUE),abstention_nb =sum(abstention_nb, na.rm =TRUE),votants_nb =sum(votants_nb, na.rm =TRUE),blancs_nb =sum(blancs_nb, na.rm =TRUE),nuls_nb =sum(nuls_nb, na.rm =TRUE),exprimes_nb =sum(exprimes_nb, na.rm =TRUE),cand_nb_voix =sum(cand_nb_voix, na.rm =TRUE),cand_civil =first(cand_civil) # Garde la civilité du candidat )
`summarise()` has grouped output by 'reg_name'. You can override using the
`.groups` argument.
# Réorganiser les colonnes dans l'ordre souhaité avec le pipe (|>)data_aggregated <- data_aggregated |>select( reg_name, inscrits_nb, votants_nb, exprimes_nb, abstention_nb, blancs_nb, nuls_nb, cand_nom, cand_civil, cand_nb_voix )head(data_aggregated)
[1] "Auvergne-Rhône-Alpes" "Bourgogne-Franche-Comté"
[3] "Bretagne" "Centre-Val de Loire"
[5] "Corse" "Grand Est"
[7] "Guadeloupe" "Guyane"
[9] "Hauts-de-France" "La Réunion"
[11] "Martinique" "Mayotte"
[13] "Normandie" "Nouvelle-Aquitaine"
[15] "Occitanie" "Pays de la Loire"
[17] "Provence-Alpes-Côte d'Azur" "Île-de-France"
[19] NA
# Trouver les lignes avec des NA dans la colonne 'reg_name'na_rows <- data_aggregated %>%filter(is.na(reg_name))# Afficher les lignes qui contiennent des NAprint(na_rows)
# Supprimer les lignes où la colonne 'reg_name' contient des NAdata_cleaned <- data_aggregated %>%filter(!is.na(reg_name))# Afficher les nouvelles valeurs uniques après nettoyageunique_regions_cleaned <-unique(data_cleaned$reg_name)print(unique_regions_cleaned)
[1] "Auvergne-Rhône-Alpes" "Bourgogne-Franche-Comté"
[3] "Bretagne" "Centre-Val de Loire"
[5] "Corse" "Grand Est"
[7] "Guadeloupe" "Guyane"
[9] "Hauts-de-France" "La Réunion"
[11] "Martinique" "Mayotte"
[13] "Normandie" "Nouvelle-Aquitaine"
[15] "Occitanie" "Pays de la Loire"
[17] "Provence-Alpes-Côte d'Azur" "Île-de-France"
head(unique_regions_cleaned)
[1] "Auvergne-Rhône-Alpes" "Bourgogne-Franche-Comté"
[3] "Bretagne" "Centre-Val de Loire"
[5] "Corse" "Grand Est"
# Liste des régions à conserverregions_to_keep <-c("Île-de-France", "Centre-Val de Loire", "Bourgogne-Franche-Comté", "Normandie", "Hauts-de-France", "Grand Est", "Pays de la Loire", "Bretagne", "Nouvelle-Aquitaine", "Occitanie", "Auvergne-Rhône-Alpes", "Provence-Alpes-Côte d'Azur", "Corse")# Filtrer les données pour ne garder que les régions spécifiéesdata_filtered <- data_aggregated %>%filter(reg_name %in% regions_to_keep)# Afficher les valeurs uniques des régions restantesunique_regions_filtered <-unique(data_filtered$reg_name)print(unique_regions_filtered)
[1] "Auvergne-Rhône-Alpes" "Bourgogne-Franche-Comté"
[3] "Bretagne" "Centre-Val de Loire"
[5] "Corse" "Grand Est"
[7] "Hauts-de-France" "Normandie"
[9] "Nouvelle-Aquitaine" "Occitanie"
[11] "Pays de la Loire" "Provence-Alpes-Côte d'Azur"
[13] "Île-de-France"
New names:
Rows: 13 Columns: 16
── Column specification
──────────────────────────────────────────────────────── Delimiter: ";" chr
(11): Libellé, Produit intérieur brut par habitant 2022, Densité de popu... dbl
(1): Code num (3): Part des pers., dont le diplôme le plus élevé est le bepc ou
le br... lgl (1): ...1
ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
Specify the column types or set `show_col_types = FALSE` to quiet this message.
• `` -> `...1`
head(DataRegions)
# A tibble: 6 × 16
...1 Code Libellé Produit intérieur br…¹ Densité de populatio…²
<lgl> <dbl> <chr> <chr> <chr>
1 NA 11 Île-de-France 63 256 € 1 025,4
2 NA 24 Centre-Val de Loire 31 093 € 65,7
3 NA 27 Bourgogne-Franche-C… 31 323 € 58,6
4 NA 28 Normandie 32 210 € 111,4
5 NA 32 Hauts-de-France 30 968 € 188,5
6 NA 44 Grand Est 32 159 € 96,8
# ℹ abbreviated names: ¹`Produit intérieur brut par habitant 2022`,
# ²`Densité de population (historique depuis 1876) 2021`
# ℹ 11 more variables: `Part des pers. âgées de - 15 ans 2021` <chr>,
# `Part des pers. âgées de 25 à 64 ans 2021` <chr>,
# `Part des pers. âgées de 75 ans ou + 2021` <chr>,
# `Taux de pauvreté 2021` <chr>,
# `Part des non ou peu diplômés dans la pop. non scolarisée de 15 ans ou + 2021` <chr>, …
names(DataRegions)
[1] "...1"
[2] "Code"
[3] "Libellé"
[4] "Produit intérieur brut par habitant 2022"
[5] "Densité de population (historique depuis 1876) 2021"
[6] "Part des pers. âgées de - 15 ans 2021"
[7] "Part des pers. âgées de 25 à 64 ans 2021"
[8] "Part des pers. âgées de 75 ans ou + 2021"
[9] "Taux de pauvreté 2021"
[10] "Part des non ou peu diplômés dans la pop. non scolarisée de 15 ans ou + 2021"
[11] "Part des pers., dont le diplôme le plus élevé est le bepc ou le brevet, dans la pop. non scolarisée de 15 ans ou + 2021"
[12] "Part des pers., dont le diplôme le plus élevé est un CAP ou un BEP, dans la pop. non scolarisée de 15 ans ou + 2021"
[13] "Part des pers., dont le diplôme le plus élevé est le bac, dans la pop. non scolarisée de 15 ans ou + 2021"
[14] "Part des diplômés d'un BAC+2 dans la pop. non scolarisée de 15 ans ou + 2021"
[15] "Part des diplômés d'un BAC+3 ou BAC+4 dans la pop. non scolarisée de 15 ans ou + 2021"
[16] "Part des diplômés d'un BAC+5 ou plus dans la pop. non scolarisée de 15 ans ou + 2021"
# Supprimer la première colonne et renommer les autresdata_cleaned <- DataRegions %>%select(-`...1`) %>%# Supprimer la première colonnerename(Code =`Code`,Region =`Libellé`,PIB_par_habitant =`Produit intérieur brut par habitant 2022`,Densite_population =`Densité de population (historique depuis 1876) 2021`,Part_pers_15_ans =`Part des pers. âgées de - 15 ans 2021`,Part_pers_25_64_ans =`Part des pers. âgées de 25 à 64 ans 2021`,Part_pers_75_ans =`Part des pers. âgées de 75 ans ou + 2021`,Taux_pauvrete =`Taux de pauvreté 2021`,Part_non_diplomes =`Part des non ou peu diplômés dans la pop. non scolarisée de 15 ans ou + 2021`,Part_diplome_bepc =`Part des pers., dont le diplôme le plus élevé est le bepc ou le brevet, dans la pop. non scolarisée de 15 ans ou + 2021`,Part_diplome_cap_bep =`Part des pers., dont le diplôme le plus élevé est un CAP ou un BEP, dans la pop. non scolarisée de 15 ans ou + 2021`,Part_diplome_bac =`Part des pers., dont le diplôme le plus élevé est le bac, dans la pop. non scolarisée de 15 ans ou + 2021`,Part_diplome_bac2 =`Part des diplômés d'un BAC+2 dans la pop. non scolarisée de 15 ans ou + 2021`,Part_diplome_bac3_4 =`Part des diplômés d'un BAC+3 ou BAC+4 dans la pop. non scolarisée de 15 ans ou + 2021`,Part_diplome_bac5 =`Part des diplômés d'un BAC+5 ou plus dans la pop. non scolarisée de 15 ans ou + 2021` )# Vérifier les premières ligneshead(data_cleaned)
# Suppression des lignes avec NA dans la colonne 'reg_name' du dataset data_aggregateddata_aggregated_clean <- data_aggregated %>%filter(!is.na(reg_name)) %>%filter(!reg_name %in%c("La Réunion", "Martinique", "Mayotte", "Guadeloupe", "Guyane"))unique(data_aggregated_clean$reg_name)
[1] "Auvergne-Rhône-Alpes" "Bourgogne-Franche-Comté"
[3] "Bretagne" "Centre-Val de Loire"
[5] "Corse" "Grand Est"
[7] "Hauts-de-France" "Normandie"
[9] "Nouvelle-Aquitaine" "Occitanie"
[11] "Pays de la Loire" "Provence-Alpes-Côte d'Azur"
[13] "Île-de-France"
unique(datasocio$Region)
[1] "Île-de-France" "Centre-Val de Loire"
[3] "Bourgogne-Franche-Comté" "Normandie"
[5] "Hauts-de-France" "Grand Est"
[7] "Pays de la Loire" "Bretagne"
[9] "Nouvelle-Aquitaine" "Occitanie"
[11] "Auvergne-Rhône-Alpes" "Provence-Alpes-Côte d'Azur"
[13] "Corse"
# Créer un tableau de correspondance avec les abréviations des régionsregion_abbr <-tibble(reg_name =c("Île-de-France", "Centre-Val de Loire", "Bourgogne-Franche-Comté", "Normandie", "Hauts-de-France", "Grand Est", "Pays de la Loire", "Bretagne", "Nouvelle-Aquitaine", "Occitanie", "Auvergne-Rhône-Alpes", "Provence-Alpes-Côte d'Azur", "Corse"),reg_abbr =c("IDF", "CVL", "BFC", "NOR", "HDF", "GE", "PDL", "BRE", "NAQ", "OCC", "ARA", "PACAC", "CORSE"))# Ajouter la colonne 'abbreviation' dans le dataset data_aggregated_Cleandata_aggregated_clean <- data_aggregated_clean %>%left_join(region_abbr, by =c("reg_name"="reg_name"))# Afficher les premières lignes pour vérifierhead(data_aggregated_clean)
# Créer un tableau de correspondance avec les abréviations des régionsregion_abbr_socio <-tibble(Region =c("Île-de-France", "Centre-Val de Loire", "Bourgogne-Franche-Comté", "Normandie", "Hauts-de-France", "Grand Est", "Pays de la Loire", "Bretagne", "Nouvelle-Aquitaine", "Occitanie", "Auvergne-Rhône-Alpes", "Provence-Alpes-Côte d'Azur", "Corse"),reg_abbr =c("IDF", "CVL", "BFC", "NOR", "HDF", "GE", "PDL", "BRE", "NAQ", "OCC", "ARA", "PACAC", "CORSE"))# Ajouter la colonne 'abbreviation' dans le dataset datasociodatasocio <- datasocio %>%left_join(region_abbr_socio, by =c("Region"="Region"))# Afficher les premières lignes pour vérifierhead(datasocio)
# A tibble: 6 × 4
Code Region PIB_par_habitant reg_abbr
<dbl> <chr> <dbl> <chr>
1 11 Île-de-France 63256 IDF
2 24 Centre-Val de Loire 31093 CVL
3 27 Bourgogne-Franche-Comté 31323 BFC
4 28 Normandie 32210 NOR
5 32 Hauts-de-France 30968 HDF
6 44 Grand Est 32159 GE
Jointure des deux data set
# Fusionner les deux datasets par la colonne 'reg_abbr'merged_data <- data_aggregated_clean %>%left_join(datasocio, by ="reg_abbr")# Afficher les premières lignes du dataset fusionnénames(merged_data)
# Réorganiser et sélectionner uniquement les variables souhaitéesdata_final <- merged_data %>%select( reg_name, reg_abbr, cand_nom, cand_civil, cand_nb_voix, PIB_par_habitant, votants_nb, inscrits_nb, exprimes_nb, abstention_nb, blancs_nb, nuls_nb )# Afficher les premières lignes pour vérifierhead(data_final)
# A tibble: 6 × 12
# Groups: reg_name [1]
reg_name reg_abbr cand_nom cand_civil cand_nb_voix PIB_par_habitant votants_nb
<chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 Auvergn… ARA ARTHAUD Mme 23137 37271 4329045
2 Auvergn… ARA DUPONT-… M. 98465 37271 4329045
3 Auvergn… ARA HIDALGO Mme 77570 37271 4329045
4 Auvergn… ARA JADOT M. 224735 37271 4329045
5 Auvergn… ARA LASSALLE M. 136436 37271 4329045
6 Auvergn… ARA LE PEN Mme 943294 37271 4329045
# ℹ 5 more variables: inscrits_nb <dbl>, exprimes_nb <dbl>,
# abstention_nb <dbl>, blancs_nb <dbl>, nuls_nb <dbl>
unique(data_final$cand_civil)
[1] "Mme" "M."
# Créer une nouvelle colonne genre avec les valeurs recodéesdata_final <- data_final %>%mutate(gender =case_when( cand_civil =="M."~"Male", # Remplacer "M." par "Male" cand_civil =="Mme"~"Female", # Remplacer "Mme" par "Female"TRUE~NA_character_# Laisser NA si aucune des conditions n'est remplie ) )# Afficher les premières lignes pour vérifierhead(data_final)
# A tibble: 6 × 13
# Groups: reg_name [1]
reg_name reg_abbr cand_nom cand_civil cand_nb_voix PIB_par_habitant votants_nb
<chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 Auvergn… ARA ARTHAUD Mme 23137 37271 4329045
2 Auvergn… ARA DUPONT-… M. 98465 37271 4329045
3 Auvergn… ARA HIDALGO Mme 77570 37271 4329045
4 Auvergn… ARA JADOT M. 224735 37271 4329045
5 Auvergn… ARA LASSALLE M. 136436 37271 4329045
6 Auvergn… ARA LE PEN Mme 943294 37271 4329045
# ℹ 6 more variables: inscrits_nb <dbl>, exprimes_nb <dbl>,
# abstention_nb <dbl>, blancs_nb <dbl>, nuls_nb <dbl>, gender <chr>
library(dplyr)# Renommer et réorganiser les colonnes avec des noms en anglaisdata_renamed <- data_final %>%rename(region_name = reg_name, # Nom de la régionregion_abbr = reg_abbr, # Abréviation de la régioncandidate_name = cand_nom, # Nom du candidatgender = gender, # Genre du candidatcivil_status = cand_civil, # Civilité du candidatcandidate_votes = cand_nb_voix, # Nombre de voix du candidatGDP_per_capita = PIB_par_habitant, # PIB par habitantvoters_count = votants_nb, # Nombre de votantsregistered_voters = inscrits_nb, # Nombre d'inscritsvalid_votes = exprimes_nb, # Nombre de votes exprimésabstentions = abstention_nb, # Nombre d'abstentionsblank_votes = blancs_nb, # Nombre de votes blancsinvalid_votes = nuls_nb # Nombre de votes nuls ) %>%select( region_name, # Région region_abbr, # Abréviation de la région candidate_name, # Nom du candidat gender, # Genre du candidat candidate_votes, # Nombre de voix du candidat GDP_per_capita, # PIB par habitant voters_count, # Nombre de votants registered_voters, # Nombre d'inscrits valid_votes, # Nombre de votes exprimés abstentions, # Nombre d'abstentions blank_votes, # Nombre de votes blancs invalid_votes # Nombre de votes nuls )data_renamed
# A tibble: 156 × 12
# Groups: region_name [13]
region_name region_abbr candidate_name gender candidate_votes GDP_per_capita
<chr> <chr> <chr> <chr> <dbl> <dbl>
1 Auvergne-Rh… ARA ARTHAUD Female 23137 37271
2 Auvergne-Rh… ARA DUPONT-AIGNAN Male 98465 37271
3 Auvergne-Rh… ARA HIDALGO Female 77570 37271
4 Auvergne-Rh… ARA JADOT Male 224735 37271
5 Auvergne-Rh… ARA LASSALLE Male 136436 37271
6 Auvergne-Rh… ARA LE PEN Female 943294 37271
7 Auvergne-Rh… ARA MACRON Male 1175085 37271
8 Auvergne-Rh… ARA MÉLENCHON Male 897434 37271
9 Auvergne-Rh… ARA POUTOU Male 30596 37271
10 Auvergne-Rh… ARA PÉCRESSE Female 217906 37271
# ℹ 146 more rows
# ℹ 6 more variables: voters_count <dbl>, registered_voters <dbl>,
# valid_votes <dbl>, abstentions <dbl>, blank_votes <dbl>,
# invalid_votes <dbl>
# Charger le package knitrlibrary(knitr)# Suppression de la colonne 'cand_civil'# Affichage joli du dataframe sans la colonne 'cand_civil'kable(data_renamed, col.names =c("Region", "Abbreviation", "Candidate", "Gender", "Ballots", "GDP/Capita", "Voters", "Registered", "Valid", "Abstentions", "Blank", "Null"), caption ="Election Data by Region and Candidate")