pop_data_niger

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écessaires
library(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 colonnes
colnames(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+)"
# 📌 Renommer la colonne 'Nom_du_district' en 'Nom_District'
data_service1_niger <- data_service1_niger %>%
  rename(Nom_District =`Nom du district`)

# 📌 Filtrer les données pour la période 2018-2022
data_filtered <- data_service1_niger %>%
  filter(Année >= 2018 & Année <= 2022)

# 📌 Ajouter la colonne 'Région' en fonction du 'Nom_District'
data_filtered <- data_filtered %>%
  mutate(Région = case_when(
    Nom_District %in% c("Aderbissinat", "Agadez", "Arlit", "Bilma", "Iferouane", "Ingall", "Tchirozérine") ~ "Agadez",
    Nom_District %in% c("Bosso", "Diffa", "Goudoumaria", "Mainé Soroa", "N'Gourti", "N'Guigmi") ~ "Diffa",
    Nom_District %in% c("Boboye", "Dioundou", "Dogon Doutchi", "Dosso", "Falmey", "Gaya", "Loga", "Tibiri") ~ "Dosso",
    Nom_District %in% c("Aguié", "Bermo", "Dakoro", "Gazaoua", "Guidan Roumdji", "Madarounfa", "Maradi Ville", "Mayahi", "Tessaoua") ~ "Maradi",
    Nom_District %in% c("Niamey I", "Niamey II", "Niamey III", "Niamey IV", "Niamey V") ~ "Niamey",
    Nom_District %in% c("Abalak", "Bagaroua", "Birni Konni", "Bouza", "Illéla", "Keita", "Madaoua", "Malbaza", "Tahoua", "Tahoua Commune", "Tassara", "Tchintabaraden", "Tillia") ~ "Tahoua",
    Nom_District %in% c("Abala", "Ayorou", "Balleyara", "Banibangou", "Bankilare", "Fillingue", "Gotheye", "Kollo", "Ouallam", "Say", "Tera", "Tillabery", "Torodi") ~ "Tillaberi",
    Nom_District %in% c("Belbedji", "Damgaram Takaya", "Doungass", "Goure", "Magaria", "Matamèye", "Mirriah", "Takeita", "Tanout", "Tesker", "Zinder Ville") ~ "Zinder",
    TRUE ~ "Non défini"
  ))

# 📌 Supprimer les doublons sur 'Nom_District'
data_filtered <- data_filtered %>%
  distinct(Nom_District, Année, .keep_all = TRUE)

# 📌 Agréger les données au niveau **régional**
data_region <- data_filtered %>%
  group_by(Région, Année) %>%
  summarise(across(where(is.numeric), sum, na.rm = TRUE))  # Somme des colonnes numériques
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 Excel
write_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 fichier
getwd()
[1] "C:/Users/USER/Desktop/LPAS3/statistique de la santé/Projets_sante_LPAS3/Projets_sante_LPAS3"
# 📌 Charger les packages nécessaires
library(dplyr)
library(readxl)

# 📌 Charger les données depuis le fichier Excel
population_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ées
head(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 nettoyage
colnames(population_data_niger)
 [1] "Nom_du_District"                             
 [2] "Année"                                       
 [3] "Taux_annuel_d'accroissement_de_la_population"
 [4] "Population_totale"                           
 [5] "Population_de_moins_de_5_ans"                
 [6] "Population_de_moins_de_1_an"                 
 [7] "Nombre_total_de_naissances_vivantes"         
 [8] "Nombre_total_de_naissances"                  
 [9] "Nombre_de_femmes_âgées_de_15-49_ans"         
[10] "mortnés"                                     
[11] "MX"                                          
[12] "accouchement_attendus"                       
[13] "grossesses_attendues"                        
# 📌 Créer la colonne 'Région' en fonction du 'Nom_du_District'
population_data_niger <- population_data_niger %>%
  mutate(Région = case_when(
    Nom_du_District %in% c("Aderbissinat", "Agadez", "Arlit", "Bilma", "Iferouane", "Ingall", "Tchirozérine") ~ "Agadez",
    Nom_du_District %in% c("Bosso", "Diffa", "Goudoumaria", "Mainé Soroa", "N'Gourti", "N'Guigmi") ~ "Diffa",
    Nom_du_District %in% c("Boboye", "Dioundou", "Dogon Doutchi", "Dosso", "Falmey", "Gaya", "Loga", "Tibiri") ~ "Dosso",
    Nom_du_District %in% c("Aguié", "Bermo", "Dakoro", "Gazaoua", "Guidan Roumdji", "Madarounfa", "Maradi Ville", "Mayahi", "Tessaoua") ~ "Maradi",
    Nom_du_District %in% c("Niamey I", "Niamey II", "Niamey III", "Niamey IV", "Niamey V") ~ "Niamey",
    Nom_du_District %in% c("Abalak", "Bagaroua", "Birni Konni", "Bouza", "Illéla", "Keita", "Madaoua", "Malbaza", "Tahoua", "Tahoua Commune", "Tassara", "Tchintabaraden", "Tillia") ~ "Tahoua",
    Nom_du_District %in% c("Abala", "Ayorou", "Balleyara", "Banibangou", "Bankilare", "Fillingue", "Gotheye", "Kollo", "Ouallam", "Say", "Tera", "Tillabery", "Torodi") ~ "Tillaberi",
    Nom_du_District %in% c("Belbedji", "Damgaram Takaya", "Doungass", "Goure", "Magaria", "Matamèye", "Mirriah", "Takeita", "Tanout", "Tesker", "Zinder Ville") ~ "Zinder",
    TRUE ~ "Non défini"
  ))

# 📌 Filtrer les données pour la période 2018-2022
population_filtered <- population_data_niger %>%
  filter(Année >= 2018 & Année <= 2022)

# 📌 Regrouper les données par région et par année et effectuer des agrégations
data_region_année <- population_filtered %>%
  group_by(Région, Année) %>%
  summarise(across(where(is.numeric), sum, na.rm = TRUE))  # Somme des colonnes numériques
`summarise()` has grouped output by 'Région'. You can override using the
`.groups` argument.
# 📌 Vérifier le résultat
head(data_region_année)
# A tibble: 6 × 13
# Groups:   Région [2]
  Région Année Taux_annuel_d'accroiss…¹ Population_totale Population_de_moins_…²
  <chr>  <dbl>                    <dbl>             <dbl>                  <dbl>
1 Agadez  2018                        0            585738                 118380
2 Agadez  2019                        0            605628                 195640
3 Agadez  2020                        0            626134                 200870
4 Agadez  2021                        0            647251                 206347
5 Agadez  2022                        0            669003                 130669
6 Diffa   2018                        0            714242                 120881
# ℹ abbreviated names: ¹​`Taux_annuel_d'accroissement_de_la_population`,
#   ²​Population_de_moins_de_5_ans
# ℹ 8 more variables: 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>
# 📌 Exporter en fichier Excel
library(writexl)
write_xlsx(list(
  "Données Régionales" = data_region_année
), "data_export_population_region_année.xlsx")
# 📌 Charger les packages nécessaires
library(dplyr)
library(readxl)

# 📌 Charger les données depuis le fichier Excel
population_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ées
head(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 nettoyage
colnames(population_data_niger)
 [1] "Nom_du_District"                             
 [2] "Année"                                       
 [3] "Taux_annuel_d'accroissement_de_la_population"
 [4] "Population_totale"                           
 [5] "Population_de_moins_de_5_ans"                
 [6] "Population_de_moins_de_1_an"                 
 [7] "Nombre_total_de_naissances_vivantes"         
 [8] "Nombre_total_de_naissances"                  
 [9] "Nombre_de_femmes_âgées_de_15-49_ans"         
[10] "mortnés"                                     
[11] "MX"                                          
[12] "accouchement_attendus"                       
[13] "grossesses_attendues"                        
# 📌 Filtrer les données pour la période 2018-2022
population_filtered <- population_data_niger %>%
  filter(Année >= 2018 & Année <= 2022)

# 📌 Regrouper les données par année et effectuer des agrégations
data_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ésultat
head(data_année)
# A tibble: 5 × 12
  Année Taux_annuel_d'accroissement_d…¹ Population_totale Population_de_moins_…²
  <dbl>                           <dbl>             <dbl>                  <dbl>
1  2018                               0         21466864                4412427 
2  2019                               0         21942943.               7088241.
3  2020                               0         22753599.               7281356.
4  2021                               0         23591981.               7521409.
5  2022                               0         24465624.               4778649.
# ℹ abbreviated names: ¹​`Taux_annuel_d'accroissement_de_la_population`,
#   ²​Population_de_moins_de_5_ans
# ℹ 8 more variables: 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>
# 📌 Exporter en fichier Excel
library(writexl)
write_xlsx(list(
  "Données par Année" = data_année
), "data_export_population_année.xlsx")
# 📌 Charger les bibliothèques nécessaires
library(sf)
Linking to GEOS 3.12.2, GDAL 3.9.3, PROJ 9.4.1; sf_use_s2() is TRUE
library(dplyr)
library(ggplot2)
library(readxl)
library(officer)

Attaching package: 'officer'
The following object is masked from 'package:readxl':

    read_xlsx
library(flextable)

# 📌 Charger les données des indicateurs pour le Niger
CPN1_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écessaires
data_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 Niger
geojson_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 Word
doc <- read_docx()

# 📌 Générer et sauvegarder les cartes pour chaque année et chaque indicateur
for (annee in 2018: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 in c("Taux_CPN1", "Taux_CPN4")) {
    
    # Vérifier si des valeurs existent pour l'année et l'indicateur
    if (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 valeurs
      theme_minimal() +
      ggtitle(paste(titre, "par région -", annee)) +
      theme(legend.position = "right")
    
    # 🔹 Sauvegarder la carte en image
    ggsave(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 Word
print(doc, target = "Cartes_CPN1_CPN4_NIGER.docx")
# Charger la bibliothèque nécessaire
library(ggplot2)

# Données
donnees <- 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 ggplot
donnees_long <- reshape2::melt(donnees, id.vars = "Annees", variable.name = "Type", value.name = "Taux")

# Tracer le graphique
ggplot(donnees_long, aes(x = Annees, y = Taux, color = Type, group = Type)) +
  geom_line(size = 1) +                     # Tracer les lignes
  geom_point(size = 3) +                     # Ajouter des points sur les lignes
  geom_text(aes(label = round(Taux, 2)),     # Ajouter les étiquettes
            vjust = -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écessaires
library(ggplot2)
library(scales)

# Créer le dataframe
donnees <- 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 ggplot
donnees_long <- reshape2::melt(donnees, id.vars = "annee", variable.name = "Indicateur", value.name = "Taux")

# Créer le graphique
ggplot(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)"))