library(readxl)data_service1_niger <-read_excel("C:/Users/USER/Desktop/LPAS3/statistique de la santé/Projets_sante_LPAS3/Projets_sante_LPAS3/data_service1_niger.xlsx")head(data_service1_niger)
# A tibble: 6 × 5
`Nom du district` Année Mois Nombre total de femme…¹ Nombre total de femm…²
<chr> <dbl> <chr> <dbl> <dbl>
1 Aderbissinat 2018 Janvier 82 60
2 Aderbissinat 2018 Février 81 63
3 Aderbissinat 2018 Mars 93 50
4 Aderbissinat 2018 Avril 93 79
5 Aderbissinat 2018 Mai 97 148
6 Aderbissinat 2018 Juin 61 68
# ℹ abbreviated names:
# ¹`Nombre total de femmes enceintes ayant accompli la 1ère visite prénatale (CPN 1)`,
# ²`Nombre total de femmes enceintes ayant accompli au moins 4 visites prénatales (CPN 4+)`
# 📌 Charger les packages nécessaireslibrary(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(readxl)library(writexl)# 📌 Vérifier les noms des colonnescolnames(data_service1_niger)
[1] "Nom du district"
[2] "Année"
[3] "Mois"
[4] "Nombre total de femmes enceintes ayant accompli la 1ère visite prénatale (CPN 1)"
[5] "Nombre total de femmes enceintes ayant accompli au moins 4 visites prénatales (CPN 4+)"
Warning: There was 1 warning in `summarise()`.
ℹ In argument: `across(where(is.numeric), sum, na.rm = TRUE)`.
ℹ In group 1: `Région = "Agadez"` and `Année = 2018`.
Caused by warning:
! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
Supply arguments directly to `.fns` through an anonymous function instead.
# Previously
across(a:b, mean, na.rm = TRUE)
# Now
across(a:b, \(x) mean(x, na.rm = TRUE))
`summarise()` has grouped output by 'Région'. You can override using the
`.groups` argument.
# 📌 Agréger les données au niveau **national**data_national <- data_filtered %>%group_by(Année) %>%summarise(across(where(is.numeric), sum, na.rm =TRUE))# 📌 Exporter en fichier Excelwrite_xlsx(list("Données détaillées"= data_filtered,"Données Régionales"= data_region,"Données Nationales"= data_national), "data_export_population_niger.xlsx")# 📌 Vérifier le chemin du fichiergetwd()
[1] "C:/Users/USER/Desktop/LPAS3/statistique de la santé/Projets_sante_LPAS3/Projets_sante_LPAS3"
# 📌 Charger les packages nécessaireslibrary(dplyr)library(readxl)# 📌 Charger les données depuis le fichier Excelpopulation_data_niger <-read_excel("C:/Users/USER/Desktop/LPAS3/statistique de la santé/Projets_sante_LPAS3/Projets_sante_LPAS3/population_data_niger.xlsx")# 📌 Vérifier les premières lignes des donnéeshead(population_data_niger)
# A tibble: 6 × 13
`Nom du District` Année Taux annuel d'accroissement de l…¹ `Population totale`
<chr> <dbl> <dbl> <dbl>
1 Aderbissinat 2018 0 42427
2 Agadez 2018 0 142032
3 Arlit 2018 0 126158
4 Bilma 2018 0 21544
5 Iferouane 2018 0 39317
6 Ingall 2018 0 62347
# ℹ abbreviated name: ¹`Taux annuel d'accroissement de la population`
# ℹ 9 more variables: `Population de moins de 5 ans` <dbl>,
# `Population de moins de 1 an` <dbl>,
# `Nombre total de naissances vivantes` <dbl>,
# `Nombre total de naissances` <dbl>,
# `Nombre de femmes âgées de 15-49 ans` <dbl>, mortnés <dbl>, MX <dbl>,
# `accouchement attendus` <dbl>, `grossesses attendues` <dbl>
# 📌 Nettoyer les noms des colonnes (remplacer les espaces par des underscores)colnames(population_data_niger) <-gsub(" ", "_", colnames(population_data_niger))# 📌 Vérifier les noms des colonnes après nettoyagecolnames(population_data_niger)
# 📌 Exporter en fichier Excellibrary(writexl)write_xlsx(list("Données Régionales"= data_region_année), "data_export_population_region_année.xlsx")
# 📌 Charger les packages nécessaireslibrary(dplyr)library(readxl)# 📌 Charger les données depuis le fichier Excelpopulation_data_niger <-read_excel("C:/Users/USER/Desktop/LPAS3/statistique de la santé/Projets_sante_LPAS3/Projets_sante_LPAS3/population_data_niger.xlsx")# 📌 Vérifier les premières lignes des donnéeshead(population_data_niger)
# A tibble: 6 × 13
`Nom du District` Année Taux annuel d'accroissement de l…¹ `Population totale`
<chr> <dbl> <dbl> <dbl>
1 Aderbissinat 2018 0 42427
2 Agadez 2018 0 142032
3 Arlit 2018 0 126158
4 Bilma 2018 0 21544
5 Iferouane 2018 0 39317
6 Ingall 2018 0 62347
# ℹ abbreviated name: ¹`Taux annuel d'accroissement de la population`
# ℹ 9 more variables: `Population de moins de 5 ans` <dbl>,
# `Population de moins de 1 an` <dbl>,
# `Nombre total de naissances vivantes` <dbl>,
# `Nombre total de naissances` <dbl>,
# `Nombre de femmes âgées de 15-49 ans` <dbl>, mortnés <dbl>, MX <dbl>,
# `accouchement attendus` <dbl>, `grossesses attendues` <dbl>
# 📌 Nettoyer les noms des colonnes (remplacer les espaces par des underscores)colnames(population_data_niger) <-gsub(" ", "_", colnames(population_data_niger))# 📌 Vérifier les noms des colonnes après nettoyagecolnames(population_data_niger)
# 📌 Filtrer les données pour la période 2018-2022population_filtered <- population_data_niger %>%filter(Année >=2018& Année <=2022)# 📌 Regrouper les données par année et effectuer des agrégationsdata_année <- population_filtered %>%group_by(Année) %>%summarise(across(where(is.numeric), sum, na.rm =TRUE)) # Somme des colonnes numériques# 📌 Vérifier le résultathead(data_année)
The following object is masked from 'package:readxl':
read_xlsx
library(flextable)# 📌 Charger les données des indicateurs pour le NigerCPN1_niger_carte <-read_excel("C:/Users/USER/Desktop/LPAS3/statistique de la santé/Projets_sante_LPAS3/Projets_sante_LPAS3/indicateur du mali burkina niger/CPN1_niger_carte.xlsx")# 📌 Filtrer les données et sélectionner les colonnes nécessairesdata_region_niger <- CPN1_niger_carte %>%filter(Année >=2018& Année <=2022) %>%select(region, Année, Taux_CPN1, Taux_CPN4) %>%mutate(Taux_CPN1 =Taux_CPN1 *1, Taux_CPN4 =Taux_CPN4 *1) %>%rename(NAME_1 = region) # Harmoniser le nom des régions# 📌 Télécharger la carte des régions du Nigergeojson_url_niger <-"https://geodata.ucdavis.edu/gadm/gadm4.1/json/gadm41_NER_1.json"niger_map <-st_read(geojson_url_niger, quiet =TRUE)# 📌 Créer un document Worddoc <-read_docx()# 📌 Générer et sauvegarder les cartes pour chaque année et chaque indicateurfor (annee in2018:2022) {# 🔹 Filtrer les données pour une année spécifique data_annee <- data_region_niger %>%filter(Année == annee)# 🔹 Fusionner avec la carte map_annee <- niger_map %>%left_join(data_annee, by ="NAME_1")# 🔹 Calculer les centroïdes des régions centroids <-st_centroid(map_annee) coords <-as.data.frame(st_coordinates(centroids)) coords$NAME_1 <- map_annee$NAME_1 coords$Taux_CPN1 <- map_annee$Taux_CPN1 coords$Taux_CPN4 <- map_annee$Taux_CPN4# 🔹 Boucle pour générer les cartes des deux indicateurs (CPN1 et CPN4)for (indic inc("Taux_CPN1", "Taux_CPN4")) {# Vérifier si des valeurs existent pour l'année et l'indicateurif (all(is.na(map_annee[[indic]]))) {message(paste("⚠️ Aucune donnée disponible pour l'année", annee, "et l'indicateur", indic))next# Passer à l'indicateur suivant si pas de données }# Définir le titre et le nom de fichier titre <-ifelse(indic =="Taux_CPN1", "Taux CPN1", "Taux CPN4") file_name <-paste0("Carte_", titre, "_", annee, ".png")# Création de la carte statique avec ggplot2 p <-ggplot() +geom_sf(data = map_annee, aes(fill = .data[[indic]]), color ="black", size =0.3) +scale_fill_gradient(low ="yellow", high ="red", na.value ="grey90", name =paste(titre, "(%)")) +geom_text(data = coords, aes(X, Y, label =paste(NAME_1, "\n", round(.data[[indic]], 1), "%")),size =3.5, color ="black", fontface ="bold") +# Ajout des étiquettes des régions et valeurstheme_minimal() +ggtitle(paste(titre, "par région -", annee)) +theme(legend.position ="right")# 🔹 Sauvegarder la carte en imageggsave(file_name, plot = p, width =8, height =6)# 🔹 Ajouter la carte au document Word doc <- doc %>%body_add_par(value =paste("Carte du", titre, "pour l'année", annee), style ="heading 1") %>%body_add_img(src = file_name, width =6, height =4) %>%body_add_par("") }}
Warning: st_centroid assumes attributes are constant over geometries
Warning: st_centroid assumes attributes are constant over geometries
Warning: st_centroid assumes attributes are constant over geometries
Warning: st_centroid assumes attributes are constant over geometries
Warning: st_centroid assumes attributes are constant over geometries
# 📌 Sauvegarder le document Wordprint(doc, target ="Cartes_CPN1_CPN4_NIGER.docx")
# Charger la bibliothèque nécessairelibrary(ggplot2)# Donnéesdonnees <-data.frame(Annees =c(2018, 2019, 2020, 2021, 2022),Taux_CPN1 =c(90.91305, 72.08690, 82.89563, 89.42808, 93.13022),Taux_CPN4 =c(44.46136, 34.77600, 42.75700, 40.88634, 44.84149))# Transformer les données pour ggplotdonnees_long <- reshape2::melt(donnees, id.vars ="Annees", variable.name ="Type", value.name ="Taux")# Tracer le graphiqueggplot(donnees_long, aes(x = Annees, y = Taux, color = Type, group = Type)) +geom_line(size =1) +# Tracer les lignesgeom_point(size =3) +# Ajouter des points sur les lignesgeom_text(aes(label =round(Taux, 2)), # Ajouter les étiquettesvjust =-0.5, size =4) +labs(title ="Évolution des taux CPN1 et CPN4 au sein de l'AES",x ="Années",y ="Taux (%)",color ="Type de CPN") +theme_minimal() +# Thème épuréscale_color_manual(values =c("Taux_CPN1"="blue", "Taux_CPN4"="red")) # Couleurs des courbes
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
# Charger les bibliothèques nécessaireslibrary(ggplot2)library(scales)# Créer le dataframedonnees <-data.frame(annee =c(2018, 2019, 2020, 2021, 2022),Taux_CPN1 =c(105.21, 105.89, 104.47, 105.23, 107.95),Taux_CPN4 =c(31.47, 35.79, 33.01, 34.76, 40.66))# Convertir en format long pour ggplotdonnees_long <- reshape2::melt(donnees, id.vars ="annee", variable.name ="Indicateur", value.name ="Taux")# Créer le graphiqueggplot(donnees_long, aes(x = annee, y = Taux, color = Indicateur, group = Indicateur)) +geom_line(size =1.2) +geom_point(size =3) +geom_text(aes(label =paste0(Taux, "%")), vjust =-1, size =2.75,check_overlap =TRUE) +scale_x_continuous(breaks =unique(donnees$annee)) +scale_y_continuous(labels =percent_format(scale =1)) +labs(title ="Évolution des taux CPN1 et CPN4 (2018-2022)",x ="Année",y ="Taux (%)",color ="Indicateur") +theme_minimal(base_size =10) +theme(plot.title =element_text(hjust =0.5, face ="bold"),legend.position ="bottom",panel.grid.minor =element_blank() ) +scale_color_manual(values =c("#1f77b4", "#ff7f0e"),labels =c("CPN1 (1er trimestre)", "CPN4 (4e trimestre)"))