Objectifs : Construire un Datamart sur l’ensemble des communes de Mayotte regroupant les informations du type :

1. Types de logements, type de sols, nombre moyen de personnes par logement, accessibilité du logement, confort sanitaire, # approvisionnement en eau, présence d’électricité, Présence d’un bac à ordures extérieur, accès à internet

2. Emploi et chomage, Précarité financière, accès aux logements sociaux, scolarisation et formation

library(readxl)
library(dplyr)
library(tidyr)

1)

D’abord on importe les jeux de données que l’on veut en renommant les colonnes sans les commentaires illustrant le tableau excel

typelogement <- read_excel("~/Downloads/Data-Logement.xls", sheet = "LOG1", range = "A6:L78", col_names = c("Code village", "Village de résidence","Effectif résidence principale","Pourcentage résidence principale","Effectif logement occasionel","Pourcentage logement occasionel","Effectif résidence secondaire","Pourcentage résidence secondaire", "Effectif logement vacant", "Pourcentage logement vacant", "Effectif ensemble log", "Pourcentage ensemble log"))

typesol <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx",sheet = "PRINC2", range = "A6:J78",col_names = c("Code village", "Village de résidence sol","Effectif terre battue","Pourcentage terre battue","Effectif béton","Pourcentage béton","Effectif carrelage ou autre","Pourcentage carrelage ou autre","Effectif ensemble sol", "Pourcentage ensemble sol"))

nbrmoylogepers <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx",sheet = "PRINC4",range = "A3:C76",) %>% rename(`Village de résidence moy`=`Village de résidence`)

accessibilite <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx", sheet = "PRINC5",range = "A6:H78",col_names = c("Code village", "Village de résidenc acc","Effectif logement accessible","Pourcentage logement accessible","Effectif logement inaccessible","Pourcentage logement inaccessible","Effectif ensemble acc", "Pourcentage ensemble acc"))

confsanitaire <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx", sheet = "PRINC7", range = "A6:H78",col_names = c("Code village", "Village de résidence sani","Effectif sans confort sanitaire","Pourcentage  sans confort sanitaire","Effectif  avec confort sanitaire","Pourcentage avec confort sanitaire","Effectif ensemble sani", "Pourcentage ensemble sani"))

eau <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx", sheet = "PRINC8", range = "A6:R78",col_names = c("Code village", "Village de résidence eau","Effectif int_log eau froide","Pourcentage int_log eau froide","Effectif int_log eau froide et chaude","Pourcentage int_log eau froide et chaude","Effectif ext_log dans cour","Pourcentage ext_log dans cour","Effectif ext_log chez parent", "Pourcentage ext_log chez parent","Effectif ext_log chez tiers", "Pourcentage ext_log chez tiers","Effectif ext_log borne fontaine", "Pourcentage ext_log borne fontaine","Effectif ext_log autre", "Pourcentage ext_log autre","Effectif ensemble eau", "Pourcentage ensemble eau"))

electricite <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx",sheet = "PRINC10", range = "A6:J78",col_names = c("Code village", "Village de résidence elect","Effectif électr compteur indiv","Pourcentage électr compteur indiv","Effectif électr sans compteur indiv","Pourcentage électr sans compteur indiv","Effectif abscence electr","Pourcentage abscence electr","Effectif ensemble elect", "Pourcentage ensemble elect"))

bacordure <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx",sheet = "PRINC13",range = "A6:H78",col_names = c("Code village", "Village de résidence bac","Effectif bac ext","Pourcentage bac ext","Effectif abscence bac ext","Pourcentage abscence bac ext","Effectif ensemble bac", "Pourcentage ensemble bac"))

internet <- read_excel("~/Downloads/Data-residence_accessibilite.xlsx", sheet = "PRINC20",range = "A6:H78",col_names = c("Code village", "Village de résidence internet","Effectif connex internet","Pourcentage connex internet","Effectif abscence internet","Pourcentage abscence internet","Effectif ensemble internet", "Pourcentage ensemble internet"))

On fait une jointure left_join avec toutes les tables précédentes qui ont la variable ‘Code Village’ en commun Nous n’avons besoin de la colonne ‘Village de résidence’ qu’une seule fois or toutes les tables la comprenne donc on supprime les autres. La variable ‘Code Village’ est codée comme étant numérique mais il s’agit d’une variable qualitative on la recode donc en tant que caractère. La dernière ligne représente l’ensemble des villages elle n’a donc pas de code village est un NA dans ‘Code Village’ on la renomme en Mayotte pour mieux comprendre. On efface les jeux de données pour optimiser visuellement mon environnement sauf “data” car ils sont tous déjà dans “data”.

data <- typelogement %>%
  left_join(typesol, by = "Code village") %>%
  left_join(nbrmoylogepers, by = "Code village") %>%
  left_join(accessibilite, by = "Code village") %>%
  left_join(confsanitaire, by = "Code village") %>%
  left_join(eau , by = "Code village") %>%
  left_join(electricite, by = "Code village") %>%
  left_join(bacordure, by = "Code village") %>%
  left_join(internet, by = "Code village") %>%
  select(-`Village de résidence sol`, -`Village de résidence moy`,-`Village de résidenc acc`,-`Village de résidence sani`,-`Village de résidence eau`,-`Village de résidence elect`,-`Village de résidence bac`,-`Village de résidence internet`)

data <- data %>%
  mutate(`Code village` = as.character(`Code village`)) %>%
  mutate(`Code village` = replace_na(`Code village`, "MAYOTTE"))

rm(typelogement,typesol,nbrmoylogepers,accessibilite,confsanitaire,eau,electricite,bacordure,internet)

On importe les jeux de données de la partie 2) que l’on veut en renommant les colonnes sans les commentaires illustrant le tableau excel. On reformate les tables en supprimant des colonnes qui ne servent à rien.

On fait ensuite la jointure left_join avec ces tables qui ont la variables “Commune” en commun. On efface les jeux de données pour optimiser visuellement mon environnement sauf “data2” car ils sont tous déjà dans “data2”.

emploichomage <- read_excel("~/Downloads/Table_emploi_chomage.xlsx")
emploichomage <- emploichomage %>% select(-"...6",-"...11")

precaritefinance <- read_excel("~/Downloads/Table_Precarite_Financiere.xlsx")

precaritelogement <- read_excel("~/Downloads/Table_precarite_logement.xlsx")

formscolaire <- read_excel("~/Downloads/Table-Formation-scolarisation.xlsx",range = "A3:F21")

data2 <- emploichomage %>%
  left_join(precaritefinance, by = "COMMUNE") %>%
  left_join(precaritelogement, by = "COMMUNE") %>%
  left_join(formscolaire, by = "COMMUNE")

rm(emploichomage,precaritefinance,precaritelogement,formscolaire)

On reformate les données contenues dans ‘Codes villages’ en supprimant le suffixe et préfixe pour pouvoir garder uniquement le numéro de commune car nous en avons besoin pour lier les tables data et data2. En effet, une commune contient plusieurs villages donc plusieurs codes villages.

data <- data %>%
  mutate(`Code village` = ifelse(
    grepl("^97", `Code village`), substr(`Code village`, 3, nchar(`Code village`)), `Code village`
                                 )
         ) %>%
  mutate(`Code village` = substr(`Code village`, 1, nchar(`Code village`) - 3))

On rajoute une variable “COMMUNE” à la table 1 afin d’associer les code villages au nom de commune pour pouvoir ensuite la rattacher à la table 2 par une jointure. On déplace la variable “COMMUNE” pour qu’elle soit en 2e position du tableau. On supprime les variables Code village et Village de résidence car la variable ‘COMMUNE’ rassemble les informations de ces 2 dernières.

data <- data %>% 
  mutate(COMMUNE = case_when(
    `Code village`== "601"~ "Acoua (601)",
    `Code village`== "602"~ "Bandraboua (602)",
    `Code village`== "603"~ "Bandrele (603)",
    `Code village`== "604"~ "Bouéni (604)",
    `Code village`== "605"~ "Chiconi (605)",
    `Code village`== "606"~ "Chirongui (606)",
    `Code village`== "607"~ "Dembeni (607)",
    `Code village`== "608"~ "Dzaoudzi (608)",
    `Code village`== "609"~ "Kani-Kéli (609)",
    `Code village`== "610"~ "Koungou (610)",
    `Code village`== "611"~ "Mamoudzou (611)",
    `Code village`== "612"~ "Mtsamboro (612)",
    `Code village`== "613"~ "M'tsangamouji (613)",
    `Code village`== "614"~ "Ouangani (614)",
    `Code village`== "615"~ "Pamandzi (615)",
    `Code village`== "616"~ "Sada (616)",
    `Code village`== "617"~ "Tsingoni (617)",
    `Code village`== "MAYO"~"MAYOTTE"
  )) %>% 
  relocate(COMMUNE, .after = `Code village`) %>%
  select(-`Code village`,-`Village de résidence`)

On regroupe en fonction de la COMMUNE. Pour regrouper les lignes de même commune, on additione les lignes dont les variables commence par “Effectif” et on fait la moyenne pour chaque variables commençant par “Pourcentage”.

data <- data %>%
  group_by(COMMUNE) %>%
  summarise(
    across(
      everything(),
      ~ ifelse(grepl("^Effectif", cur_column()), sum(.x, na.rm = TRUE), 
               ifelse(grepl("^Pourcentage", cur_column()), mean(.x, na.rm = TRUE), .x)),
      .names = "{.col}"
    )
  )

On fait la jointure left_join pour joindre les tables data et data2 qui ont la variable “COMMUNE” en commun. J’arrange dans l’ordre alphabétique la colonne “COMMUNE” puis je place la ligne “MAYOTTE” en dernière ligne car il s’agit de l’ensemble des données du tableau.

datafinal <- data %>% 
  left_join(data2, by = "COMMUNE") %>%
  arrange(COMMUNE) %>%
  slice(c(1:11, 18, 13:17, 12))