Elections Premier tour 2022

Installation de packages

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Importaion des données par département

library(readr)
data <- read_csv("03-resultats-par-departement.csv", show_col_types = FALSE)
data|>colnames()
 [1] "url"                     "reg_code"               
 [3] "reg_code_3"              "reg_name"               
 [5] "dep_code"                "dep_code_min"           
 [7] "dep_code_3"              "dep_name"               
 [9] "num_tour"                "inscrits_nb"            
[11] "abstention_nb"           "abstention_pourc"       
[13] "votants_nb"              "blancs_nb"              
[15] "blancs_pourc_inscrits"   "blancs_pourc_votants"   
[17] "nuls_nb"                 "nuls_pourc_inscrits"    
[19] "nuls_pourc_votants"      "exprimes_nb"            
[21] "exprimes_pourc_inscrits" "exprimes_pourc_votants" 
[23] "cand_num_panneau"        "cand_nom"               
[25] "cand_prenom"             "cand_civil"             
[27] "cand_nb_voix"            "cand_rapport_exprim"    
[29] "cand_rapport_inscrits"  
data<-data[-c(1,2,3,7,9)]
data|>colnames()
 [1] "reg_name"                "dep_code"               
 [3] "dep_code_min"            "dep_name"               
 [5] "inscrits_nb"             "abstention_nb"          
 [7] "abstention_pourc"        "votants_nb"             
 [9] "blancs_nb"               "blancs_pourc_inscrits"  
[11] "blancs_pourc_votants"    "nuls_nb"                
[13] "nuls_pourc_inscrits"     "nuls_pourc_votants"     
[15] "exprimes_nb"             "exprimes_pourc_inscrits"
[17] "exprimes_pourc_votants"  "cand_num_panneau"       
[19] "cand_nom"                "cand_prenom"            
[21] "cand_civil"              "cand_nb_voix"           
[23] "cand_rapport_exprim"     "cand_rapport_inscrits"  
# Sélectionner les colonnes demandées
selected_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)
# A tibble: 6 × 10
# Groups:   reg_name [1]
  reg_name    inscrits_nb votants_nb exprimes_nb abstention_nb blancs_nb nuls_nb
  <chr>             <dbl>      <dbl>       <dbl>         <dbl>     <dbl>   <dbl>
1 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
2 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
3 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
4 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
5 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
6 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
# ℹ 3 more variables: cand_nom <chr>, cand_civil <chr>, cand_nb_voix <dbl>
unique(data_aggregated$reg_name)
 [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 NA
print(na_rows)
# A tibble: 12 × 10
# Groups:   reg_name [1]
   reg_name inscrits_nb votants_nb exprimes_nb abstention_nb blancs_nb nuls_nb
   <chr>          <dbl>      <dbl>       <dbl>         <dbl>     <dbl>   <dbl>
 1 <NA>         1899082     657490      646544       1241592      6714    4232
 2 <NA>         1899082     657490      646544       1241592      6714    4232
 3 <NA>         1899082     657490      646544       1241592      6714    4232
 4 <NA>         1899082     657490      646544       1241592      6714    4232
 5 <NA>         1899082     657490      646544       1241592      6714    4232
 6 <NA>         1899082     657490      646544       1241592      6714    4232
 7 <NA>         1899082     657490      646544       1241592      6714    4232
 8 <NA>         1899082     657490      646544       1241592      6714    4232
 9 <NA>         1899082     657490      646544       1241592      6714    4232
10 <NA>         1899082     657490      646544       1241592      6714    4232
11 <NA>         1899082     657490      646544       1241592      6714    4232
12 <NA>         1899082     657490      646544       1241592      6714    4232
# ℹ 3 more variables: cand_nom <chr>, cand_civil <chr>, cand_nb_voix <dbl>
# Supprimer les lignes où la colonne 'reg_name' contient des NA
data_cleaned <- data_aggregated %>%
  filter(!is.na(reg_name))

# Afficher les nouvelles valeurs uniques après nettoyage
unique_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 à conserver
regions_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ées
data_filtered <- data_aggregated %>%
  filter(reg_name %in% regions_to_keep)

# Afficher les valeurs uniques des régions restantes
unique_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"             

Données socio-économiques

library(readr)

DataRegions <- read_delim("DataRegions.csv", 
    delim = ";", escape_double = FALSE, trim_ws = TRUE, 
    skip = 1)
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 autres
data_cleaned <- DataRegions %>%
  select(-`...1`) %>%  # Supprimer la première colonne
  rename(
    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 lignes
head(data_cleaned)
# A tibble: 6 × 15
   Code Region              PIB_par_habitant Densite_population Part_pers_15_ans
  <dbl> <chr>               <chr>            <chr>              <chr>           
1    11 Île-de-France       63 256 €         1 025,4            19,2 %          
2    24 Centre-Val de Loire 31 093 €         65,7               17,3 %          
3    27 Bourgogne-Franche-… 31 323 €         58,6               16,5 %          
4    28 Normandie           32 210 €         111,4              17,3 %          
5    32 Hauts-de-France     30 968 €         188,5              18,9 %          
6    44 Grand Est           32 159 €         96,8               16,8 %          
# ℹ 10 more variables: Part_pers_25_64_ans <chr>, Part_pers_75_ans <chr>,
#   Taux_pauvrete <chr>, Part_non_diplomes <chr>, Part_diplome_bepc <dbl>,
#   Part_diplome_cap_bep <chr>, Part_diplome_bac <chr>,
#   Part_diplome_bac2 <chr>, Part_diplome_bac3_4 <dbl>, Part_diplome_bac5 <dbl>
# Nettoyer la colonne et convertir directement en numérique
 data_cleaned <-data_cleaned %>%
  mutate(
    PIB_par_habitant = PIB_par_habitant %>%
      str_remove("€")        # Enlever le symbole €
    %>%
      str_remove_all("[[:space:]]") %>%   # Enlever les espaces insécables
      as.numeric()                      
  ) 

 
 datasocio<-data_cleaned|>select(c(1:3))
 data_aggregated
# A tibble: 228 × 10
# Groups:   reg_name [19]
   reg_name   inscrits_nb votants_nb exprimes_nb abstention_nb blancs_nb nuls_nb
   <chr>            <dbl>      <dbl>       <dbl>         <dbl>     <dbl>   <dbl>
 1 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 2 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 3 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 4 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 5 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 6 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 7 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 8 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
 9 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
10 Auvergne-…     5557535    4329045     4233983       1228490     70084   24978
# ℹ 218 more rows
# ℹ 3 more variables: cand_nom <chr>, cand_civil <chr>, cand_nb_voix <dbl>
 variable.names(datasocio)
[1] "Code"             "Region"           "PIB_par_habitant"
 variable.names(data_aggregated)
 [1] "reg_name"      "inscrits_nb"   "votants_nb"    "exprimes_nb"  
 [5] "abstention_nb" "blancs_nb"     "nuls_nb"       "cand_nom"     
 [9] "cand_civil"    "cand_nb_voix" 
 dim(data_aggregated)
[1] 228  10
 dim(datasocio)
[1] 13  3

Dernier Nettoyage

# Suppression des lignes avec NA dans la colonne 'reg_name' du dataset data_aggregated
data_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égions
region_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_Clean
data_aggregated_clean <- data_aggregated_clean %>%
  left_join(region_abbr, by = c("reg_name" = "reg_name"))

# Afficher les premières lignes pour vérifier
head(data_aggregated_clean)
# A tibble: 6 × 11
# Groups:   reg_name [1]
  reg_name    inscrits_nb votants_nb exprimes_nb abstention_nb blancs_nb nuls_nb
  <chr>             <dbl>      <dbl>       <dbl>         <dbl>     <dbl>   <dbl>
1 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
2 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
3 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
4 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
5 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
6 Auvergne-R…     5557535    4329045     4233983       1228490     70084   24978
# ℹ 4 more variables: cand_nom <chr>, cand_civil <chr>, cand_nb_voix <dbl>,
#   reg_abbr <chr>
# Créer un tableau de correspondance avec les abréviations des régions
region_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 datasocio
datasocio <- datasocio %>%
  left_join(region_abbr_socio, by = c("Region" = "Region"))

# Afficher les premières lignes pour vérifier
head(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)
 [1] "reg_name"         "inscrits_nb"      "votants_nb"       "exprimes_nb"     
 [5] "abstention_nb"    "blancs_nb"        "nuls_nb"          "cand_nom"        
 [9] "cand_civil"       "cand_nb_voix"     "reg_abbr"         "Code"            
[13] "Region"           "PIB_par_habitant"
# Réorganiser et sélectionner uniquement les variables souhaitées
data_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érifier
head(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ées
data_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érifier
head(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>
names(data_final)
 [1] "reg_name"         "reg_abbr"         "cand_nom"         "cand_civil"      
 [5] "cand_nb_voix"     "PIB_par_habitant" "votants_nb"       "inscrits_nb"     
 [9] "exprimes_nb"      "abstention_nb"    "blancs_nb"        "nuls_nb"         
[13] "gender"          
library(dplyr)

# Renommer et réorganiser les colonnes avec des noms en anglais
data_renamed <- data_final %>%
  rename(
    region_name = reg_name,           # Nom de la région
    region_abbr = reg_abbr,           # Abréviation de la région
    candidate_name = cand_nom,        # Nom du candidat
    gender = gender,                  # Genre du candidat
    civil_status = cand_civil,        # Civilité du candidat
    candidate_votes = cand_nb_voix,   # Nombre de voix du candidat
    GDP_per_capita = PIB_par_habitant, # PIB par habitant
    voters_count = votants_nb,        # Nombre de votants
    registered_voters = inscrits_nb,  # Nombre d'inscrits
    valid_votes = exprimes_nb,        # Nombre de votes exprimés
    abstentions = abstention_nb,      # Nombre d'abstentions
    blank_votes = blancs_nb,          # Nombre de votes blancs
    invalid_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 knitr
library(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")
Election Data by Region and Candidate
Region Abbreviation Candidate Gender Ballots GDP/Capita Voters Registered Valid Abstentions Blank Null
Auvergne-Rhône-Alpes ARA ARTHAUD Female 23137 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA DUPONT-AIGNAN Male 98465 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA HIDALGO Female 77570 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA JADOT Male 224735 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA LASSALLE Male 136436 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA LE PEN Female 943294 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA MACRON Male 1175085 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA MÉLENCHON Male 897434 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA POUTOU Male 30596 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA PÉCRESSE Female 217906 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA ROUSSEL Male 96409 37271 4329045 5557535 4233983 1228490 70084 24978
Auvergne-Rhône-Alpes ARA ZEMMOUR Male 312916 37271 4329045 5557535 4233983 1228490 70084 24978
Bourgogne-Franche-Comté BFC ARTHAUD Female 10643 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC DUPONT-AIGNAN Male 38691 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC HIDALGO Female 26543 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC JADOT Male 60235 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC LASSALLE Male 49557 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC LE PEN Female 409641 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC MACRON Male 394118 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC MÉLENCHON Male 277900 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC POUTOU Male 12737 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC PÉCRESSE Female 76654 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC ROUSSEL Male 33932 31323 1535727 1992409 1497708 456682 26381 11638
Bourgogne-Franche-Comté BFC ZEMMOUR Male 107057 31323 1535727 1992409 1497708 456682 26381 11638
Bretagne BRE ARTHAUD Female 12965 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE DUPONT-AIGNAN Male 35116 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE HIDALGO Female 43596 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE JADOT Male 122198 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE LASSALLE Male 58653 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE LE PEN Female 385393 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE MACRON Male 647172 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE MÉLENCHON Male 407527 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE POUTOU Male 19913 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE PÉCRESSE Female 92808 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE ROUSSEL Male 51193 33648 2018647 2562061 1973518 543414 31884 13245
Bretagne BRE ZEMMOUR Male 96984 33648 2018647 2562061 1973518 543414 31884 13245
Centre-Val de Loire CVL ARTHAUD Female 9256 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL DUPONT-AIGNAN Male 31759 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL HIDALGO Female 23162 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL JADOT Male 54401 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL LASSALLE Male 38659 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL LE PEN Female 347845 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL MACRON Male 383851 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL MÉLENCHON Male 251259 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL POUTOU Male 11226 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL PÉCRESSE Female 71690 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL ROUSSEL Male 33590 31093 1377800 1837328 1345273 459528 23216 9311
Centre-Val de Loire CVL ZEMMOUR Male 88575 31093 1377800 1837328 1345273 459528 23216 9311
Corse CORSE ARTHAUD Female 455 29260 152403 243032 147942 90629 2594 1867
Corse CORSE DUPONT-AIGNAN Male 2600 29260 152403 243032 147942 90629 2594 1867
Corse CORSE HIDALGO Female 1589 29260 152403 243032 147942 90629 2594 1867
Corse CORSE JADOT Male 4801 29260 152403 243032 147942 90629 2594 1867
Corse CORSE LASSALLE Male 15408 29260 152403 243032 147942 90629 2594 1867
Corse CORSE LE PEN Female 42285 29260 152403 243032 147942 90629 2594 1867
Corse CORSE MACRON Male 26796 29260 152403 243032 147942 90629 2594 1867
Corse CORSE MÉLENCHON Male 19781 29260 152403 243032 147942 90629 2594 1867
Corse CORSE POUTOU Male 1375 29260 152403 243032 147942 90629 2594 1867
Corse CORSE PÉCRESSE Female 9363 29260 152403 243032 147942 90629 2594 1867
Corse CORSE ROUSSEL Male 4553 29260 152403 243032 147942 90629 2594 1867
Corse CORSE ZEMMOUR Male 18936 29260 152403 243032 147942 90629 2594 1867
Grand Est GE ARTHAUD Female 18658 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE DUPONT-AIGNAN Male 74918 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE HIDALGO Female 40031 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE JADOT Male 111960 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE LASSALLE Male 77442 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE LE PEN Female 825219 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE MACRON Male 762282 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE MÉLENCHON Male 492439 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE POUTOU Male 22243 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE PÉCRESSE Female 120931 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE ROUSSEL Male 47425 32159 2854576 3862920 2793813 1008344 42256 18507
Grand Est GE ZEMMOUR Male 200265 32159 2854576 3862920 2793813 1008344 42256 18507
Hauts-de-France HDF ARTHAUD Female 20977 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF DUPONT-AIGNAN Male 55439 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF HIDALGO Female 40856 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF JADOT Male 95234 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF LASSALLE Male 62548 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF LE PEN Female 1015361 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF MACRON Male 773221 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF MÉLENCHON Male 577878 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF POUTOU Male 21150 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF PÉCRESSE Female 107631 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF ROUSSEL Male 94831 30968 3109141 4255350 3044732 1146209 42994 21415
Hauts-de-France HDF ZEMMOUR Male 179606 30968 3109141 4255350 3044732 1146209 42994 21415
Normandie NOR ARTHAUD Female 12839 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR DUPONT-AIGNAN Male 38560 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR HIDALGO Female 30235 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR JADOT Male 73289 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR LASSALLE Male 45488 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR LE PEN Female 484106 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR MACRON Male 521769 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR MÉLENCHON Male 335590 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR POUTOU Male 16005 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR PÉCRESSE Female 79800 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR ROUSSEL Male 46358 32210 1822965 2413749 1783485 590784 28947 10533
Normandie NOR ZEMMOUR Male 99446 32210 1822965 2413749 1783485 590784 28947 10533
Nouvelle-Aquitaine NAQ ARTHAUD Female 18496 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ DUPONT-AIGNAN Male 67662 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ HIDALGO Female 77326 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ JADOT Male 151747 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ LASSALLE Male 201773 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ LE PEN Female 779948 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ MACRON Male 945332 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ MÉLENCHON Male 681405 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ POUTOU Male 32600 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ PÉCRESSE Female 157230 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ ROUSSEL Male 96800 32661 3500542 4463041 3420820 962499 53460 26262
Nouvelle-Aquitaine NAQ ZEMMOUR Male 210501 32661 3500542 4463041 3420820 962499 53460 26262
Occitanie OCC ARTHAUD Female 14884 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC DUPONT-AIGNAN Male 63261 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC HIDALGO Female 77166 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC JADOT Male 139234 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC LASSALLE Male 184994 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC LE PEN Female 815495 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC MACRON Male 777783 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC MÉLENCHON Male 742543 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC POUTOU Male 23902 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC PÉCRESSE Female 129143 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC ROUSSEL Male 83483 31710 3383388 4323929 3312101 940541 47910 23377
Occitanie OCC ZEMMOUR Male 260213 31710 3383388 4323929 3312101 940541 47910 23377
Pays de la Loire PDL ARTHAUD Female 13853 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL DUPONT-AIGNAN Male 44215 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL HIDALGO Female 43291 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL JADOT Male 127935 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL LASSALLE Male 54592 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL LE PEN Female 442025 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL MACRON Male 707890 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL MÉLENCHON Male 408969 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL POUTOU Male 18441 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL PÉCRESSE Female 106786 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL ROUSSEL Male 45058 35235 2180931 2832949 2127443 652018 38934 14554
Pays de la Loire PDL ZEMMOUR Male 114388 35235 2180931 2832949 2127443 652018 38934 14554
Provence-Alpes-Côte d’Azur PACAC ARTHAUD Female 9460 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC DUPONT-AIGNAN Male 60205 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC HIDALGO Female 29511 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC JADOT Male 107670 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC LASSALLE Male 72847 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC LE PEN Female 732379 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC MACRON Male 619531 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC MÉLENCHON Male 524681 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC POUTOU Male 16224 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC PÉCRESSE Female 116137 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC ROUSSEL Male 54743 40043 2704296 3663853 2654226 959557 35951 14119
Provence-Alpes-Côte d’Azur PACAC ZEMMOUR Male 310838 40043 2704296 3663853 2654226 959557 35951 14119
Île-de-France IDF ARTHAUD Female 21901 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF DUPONT-AIGNAN Male 87341 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF HIDALGO Female 78556 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF JADOT Male 296193 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF LASSALLE Male 87356 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF LE PEN Female 711532 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF MACRON Male 1656164 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF MÉLENCHON Male 1659043 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF POUTOU Male 33056 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF PÉCRESSE Female 339431 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF ROUSSEL Male 105162 63256 5588557 7349284 5485226 1760727 76633 26698
Île-de-France IDF ZEMMOUR Male 409491 63256 5588557 7349284 5485226 1760727 76633 26698