From 5b132805cc1b31da55f62a7a2985f202266bd9e3 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Tue, 18 Feb 2025 16:01:22 +0100
Subject: [PATCH 01/16] 1ere etape de script

---
 data-raw/chargement_eco_ptz.R     | 175 ++++++++++++++----------------
 data-raw/chargement_eco_ptz_old.R | 109 +++++++++++++++++++
 2 files changed, 188 insertions(+), 96 deletions(-)
 create mode 100644 data-raw/chargement_eco_ptz_old.R

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index a2c01e7..8f17c48 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -1,109 +1,92 @@
-
 # chargement_eco_ptz
 
-
-# librairies ---------
-library(readxl)
+# librairies --------------
 library(tidyverse)
-library(tricky)
 library(lubridate)
+library(COGiter)
+library(sf)
+# library(tricky)
 library(DBI)
 library(RPostgreSQL)
 library(datalibaba)
 library(googlesheets4)
+library(stringr)
 
 rm(list = ls())
 
-# chargement et calcul -----------
-# chargement des données Eco-PTZ (Eco Prêts à Taux Zéro) --------
-# fichier cree a partir d une requete geokit 3 :
-# "Dossiers publics/geokit3/Regions Pays de la Loire/DREAL/INDICATEURS TER DATA LAB/gk3_ECO_PTZ_france"
-eco_ptz <- read_excel("extdata/gk3_eco_ptz.xlsx",sheet=1) %>% 
-  set_standard_names()%>%
-  rename(date = date_d_emission_de_l_offre,
-         depcom = code_de_la_commune,
-         variable=eptz_libelle_nature_du_logement,
-         valeur=eptz_nombre_de_prets) %>% 
-  select(depcom,date,variable,valeur)%>% 
-  # filter(date>=2008) %>% 
-  mutate(date=make_date(date,12,31))%>%
-  mutate(variable=str_replace(variable,'Maison individuelle', "nb_eptz.maison_individuelle") %>% 
-           str_replace('Appartement',"nb_eptz.appartement"))%>%
-  mutate_if(is.character,as.factor) %>% 
-  complete(depcom,date,variable,fill = list(valeur =0)) %>% 
-  pivot_wider(names_from = variable,values_from = valeur)
-
-
-# versement dans le sgbd/datamart.portrait_territoires -------------
-poster_data(data = eco_ptz,
-            db = "datamart",
-            schema = "portrait_territoires", 
-            table = "source_eco_ptz",
-            post_row_name = FALSE, 
-            overwrite = TRUE,
-            droits_schema = TRUE,
-            pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
-            user = "does")
-
-# METADONNEES------------------------------------
-
-## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
-var <- setdiff(names(eco_ptz), c("depcom", "date"))
-
-## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
-nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
-  basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
-  gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
-
-## authentification google sheet grâce au .Renviron
-gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
-gs4_deauth()
-
-
-
-## chargement du référentiel indicateurs google sheet
-metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-                                  sheet = "indicateurs") %>%
-  # on ne garde que les variables concernées par le présent script de chargement
-  filter(source == nom_script_sce) %>% 
-  # on ajoute l'unité dans le libellé de la variable
-  mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
-  select(variable, libelle_variable) %>% 
-  # ajout des libellés pour depcom et date
-  bind_rows(
-    tribble(
-      ~variable, ~libelle_variable,
-      "depcom", "Code INSEE de la commune",
-      "date", "Millesime"
-    )
-  )
-
-## Vérification que la documentation des indicateurs est complète
-all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
-
-## Envoi des libellés de variable dans le SGBD
-post_dico_attr(dico = metadata_indicateur, table = "source_eco_ptz", schema = "portrait_territoires",
-               db = "datamart", user = "does")
-
-## Récupération des métadonnées de la source
-nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
-  str_replace("indicateur_", "") %>%
-  str_replace("_cogiter|_cog$", "")
-
-metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-                              sheet = "sources") %>%
-  filter(source == nom_sce) %>% 
-  mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
-  pull(com_table) %>%
-  # ajout de complement sur la généalogie
-  paste0(".\n", "Chargement des donn\u00e9es sur Geokit3")
-
-## commentaires de la table
-
-commenter_table(comment = metadata_source,
-                db = "datamart",
-                schema = "portrait_territoires",
-                table = "source_eco_ptz", 
-                user = "does")
+# a calculer
+# Nombre d'eco-PTZ
+# Nombre d'eco-PTZ par type de construction ( maison / appartement )
+# Nombre d'eco-PTZ par type de rénovation ( combles, murs, ...)
+
+# indicateurs utilisés
+# DATP : Date d’émission de l’offre de prêt
+# CINS : Code INSEE de la commune du logement
+# CPLA : Code postal du logement
+# VILL : Ville du logement
+# ANAC : Année d’achèvement du logement
+# NALO : Nature du logement
+# MTTR : Montant total TTC des travaux
+# DREZ : Durée de l’éco-prêt
+# MTPR : Montant de l’éco-prêt (dernier déclaré)
+
+# paramêtres
+millesime = 2023 #millesime du fichier
+annee_conservee = 2013 # on supprime les années antérieures
+
+BASE_ECO_PTZ_DHUP<- read_delim(paste0("/nfs/data/partage-PTZ-EPTZ/PTZ-EPTZ/BASE_EPZ_DHUP_",millesime,"_DREAL.csv"),
+                          delim = ";", escape_double = FALSE, trim_ws = TRUE)
+
+# suppression des années anciennes
+base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
+  mutate(DATP = str_sub(DATP,1,4)) %>% 
+  filter (DATP >= annee_conservee) %>%
+  select(DATP,CINS,CPLA,VILL) 
+
+#complétage du code insee
+communes2 <- communes %>%                 #table des communes
+  select(DEPCOM,NOM_DEPCOM,DEP) %>% 
+  mutate(NOM_DEPCOM = toupper(NOM_DEPCOM),  #met tout en majuscules
+         NOM_DEPCOM = iconv(NOM_DEPCOM, from = "UTF-8", to = "ASCII//TRANSLIT"),   #enlève les accents
+         NOM_DEPCOM = str_replace_all (NOM_DEPCOM,"[-']"," "), #remplace les tirets et apostrophes par des espaces
+         lien = paste(DEP,NOM_DEPCOM)) %>% 
+  select(lien, DEPCOM) 
+communes3 <- communes2 %>%   #creation d'une table dans laquelle on remplace "saint" par "st"
+  mutate(lien = str_replace (lien,"SAINTES","STES"),
+         lien = str_replace (lien,"SAINTE","STE"),
+         lien = str_replace (lien,"SAINTS","STS"),
+         lien = str_replace (lien,"SAINT","ST"))       
+communes2 <- rbind(communes2,communes3) %>% 
+  unique()
+        
+base_intermediaire2 <- base_intermediaire %>% 
+  mutate(lien = paste(str_sub(CPLA,1,2),VILL)) %>% 
+  left_join(communes2, by = "lien")
+  
+
+
+ 
+
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
diff --git a/data-raw/chargement_eco_ptz_old.R b/data-raw/chargement_eco_ptz_old.R
new file mode 100644
index 0000000..a2c01e7
--- /dev/null
+++ b/data-raw/chargement_eco_ptz_old.R
@@ -0,0 +1,109 @@
+
+# chargement_eco_ptz
+
+
+# librairies ---------
+library(readxl)
+library(tidyverse)
+library(tricky)
+library(lubridate)
+library(DBI)
+library(RPostgreSQL)
+library(datalibaba)
+library(googlesheets4)
+
+rm(list = ls())
+
+# chargement et calcul -----------
+# chargement des données Eco-PTZ (Eco Prêts à Taux Zéro) --------
+# fichier cree a partir d une requete geokit 3 :
+# "Dossiers publics/geokit3/Regions Pays de la Loire/DREAL/INDICATEURS TER DATA LAB/gk3_ECO_PTZ_france"
+eco_ptz <- read_excel("extdata/gk3_eco_ptz.xlsx",sheet=1) %>% 
+  set_standard_names()%>%
+  rename(date = date_d_emission_de_l_offre,
+         depcom = code_de_la_commune,
+         variable=eptz_libelle_nature_du_logement,
+         valeur=eptz_nombre_de_prets) %>% 
+  select(depcom,date,variable,valeur)%>% 
+  # filter(date>=2008) %>% 
+  mutate(date=make_date(date,12,31))%>%
+  mutate(variable=str_replace(variable,'Maison individuelle', "nb_eptz.maison_individuelle") %>% 
+           str_replace('Appartement',"nb_eptz.appartement"))%>%
+  mutate_if(is.character,as.factor) %>% 
+  complete(depcom,date,variable,fill = list(valeur =0)) %>% 
+  pivot_wider(names_from = variable,values_from = valeur)
+
+
+# versement dans le sgbd/datamart.portrait_territoires -------------
+poster_data(data = eco_ptz,
+            db = "datamart",
+            schema = "portrait_territoires", 
+            table = "source_eco_ptz",
+            post_row_name = FALSE, 
+            overwrite = TRUE,
+            droits_schema = TRUE,
+            pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
+            user = "does")
+
+# METADONNEES------------------------------------
+
+## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
+var <- setdiff(names(eco_ptz), c("depcom", "date"))
+
+## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
+nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
+  basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
+  gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
+
+## authentification google sheet grâce au .Renviron
+gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
+gs4_deauth()
+
+
+
+## chargement du référentiel indicateurs google sheet
+metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
+                                  sheet = "indicateurs") %>%
+  # on ne garde que les variables concernées par le présent script de chargement
+  filter(source == nom_script_sce) %>% 
+  # on ajoute l'unité dans le libellé de la variable
+  mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
+  select(variable, libelle_variable) %>% 
+  # ajout des libellés pour depcom et date
+  bind_rows(
+    tribble(
+      ~variable, ~libelle_variable,
+      "depcom", "Code INSEE de la commune",
+      "date", "Millesime"
+    )
+  )
+
+## Vérification que la documentation des indicateurs est complète
+all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
+
+## Envoi des libellés de variable dans le SGBD
+post_dico_attr(dico = metadata_indicateur, table = "source_eco_ptz", schema = "portrait_territoires",
+               db = "datamart", user = "does")
+
+## Récupération des métadonnées de la source
+nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
+  str_replace("indicateur_", "") %>%
+  str_replace("_cogiter|_cog$", "")
+
+metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
+                              sheet = "sources") %>%
+  filter(source == nom_sce) %>% 
+  mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
+  pull(com_table) %>%
+  # ajout de complement sur la généalogie
+  paste0(".\n", "Chargement des donn\u00e9es sur Geokit3")
+
+## commentaires de la table
+
+commenter_table(comment = metadata_source,
+                db = "datamart",
+                schema = "portrait_territoires",
+                table = "source_eco_ptz", 
+                user = "does")
+
+
-- 
GitLab


From 7f140b84f52d91070c7f08e397640a281ed95f15 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Wed, 19 Feb 2025 17:29:24 +0100
Subject: [PATCH 02/16] creation des  indicateurs

---
 data-raw/chargement_eco_ptz.R | 97 +++++++++++++++++++++++++++++++----
 1 file changed, 88 insertions(+), 9 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 8f17c48..7a1f179 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -22,14 +22,18 @@ rm(list = ls())
 # indicateurs utilisés
 # DATP : Date d’émission de l’offre de prêt
 # CINS : Code INSEE de la commune du logement
+# CSEN :
 # CPLA : Code postal du logement
 # VILL : Ville du logement
+# NALO : Nature du logement: 1 = maison individuelle 2 = appartement
+# TTRV : type de travaux
+
 # ANAC : Année d’achèvement du logement
-# NALO : Nature du logement
 # MTTR : Montant total TTC des travaux
 # DREZ : Durée de l’éco-prêt
 # MTPR : Montant de l’éco-prêt (dernier déclaré)
 
+
 # paramêtres
 millesime = 2023 #millesime du fichier
 annee_conservee = 2013 # on supprime les années antérieures
@@ -41,9 +45,20 @@ BASE_ECO_PTZ_DHUP<- read_delim(paste0("/nfs/data/partage-PTZ-EPTZ/PTZ-EPTZ/BASE_
 base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
   mutate(DATP = str_sub(DATP,1,4)) %>% 
   filter (DATP >= annee_conservee) %>%
-  select(DATP,CINS,CPLA,VILL) 
+  select(DATP,CINS,CPLA,VILL,NALO,TTRV,CSEN) %>%  
+# application des filtres
+# CSEN est"V" (valide)
+# si type de travaux (TTRV) = 4 (réhabilitation de système d’assainissement non collectif),
+# la nature du logement (NALO) doit être égale à 1 (maison individuelle)
+  filter(CSEN == "V") %>%
+  mutate(NALO = case_when(
+    TTRV == "4" ~ 1,
+    TRUE~ NALO))
+
+
+
 
-#complétage du code insee
+#complétage du code insee--------------------------------------------------------
 communes2 <- communes %>%                 #table des communes
   select(DEPCOM,NOM_DEPCOM,DEP) %>% 
   mutate(NOM_DEPCOM = toupper(NOM_DEPCOM),  #met tout en majuscules
@@ -51,18 +66,82 @@ communes2 <- communes %>%                 #table des communes
          NOM_DEPCOM = str_replace_all (NOM_DEPCOM,"[-']"," "), #remplace les tirets et apostrophes par des espaces
          lien = paste(DEP,NOM_DEPCOM)) %>% 
   select(lien, DEPCOM) 
-communes3 <- communes2 %>%   #creation d'une table dans laquelle on remplace "saint" par "st"
+communes2a <- communes2 %>%   #creation d'une table dans laquelle on remplace "saint" par "st"
   mutate(lien = str_replace (lien,"SAINTES","STES"),
          lien = str_replace (lien,"SAINTE","STE"),
          lien = str_replace (lien,"SAINTS","STS"),
-         lien = str_replace (lien,"SAINT","ST"))       
-communes2 <- rbind(communes2,communes3) %>% 
+         lien = str_replace (lien,"SAINT","ST")
+  )
+communes2b <- communes2 %>%   #creation d'une table dans laquelle on remplace "saint" par "st"
+  mutate(lien = str_replace (lien,"LE ",""),
+         lien = str_replace (lien,"LES ",""),
+         lien = ifelse(str_detect(lien,"LA LONGEVILLE"), lien, str_replace (lien,"LA ","")),
+         # lien = str_replace (lien,"LA ",""),
+         lien = str_replace (lien,"L ","")  
+  )
+communes2 <- rbind(communes2,communes2a,communes2b) %>% 
   unique()
         
-base_intermediaire2 <- base_intermediaire %>% 
-  mutate(lien = paste(str_sub(CPLA,1,2),VILL)) %>% 
-  left_join(communes2, by = "lien")
+base_intermediaire2 <- base_intermediaire %>%
+  mutate(VILL = iconv(VILL, from = "UTF-8", to = "ASCII//TRANSLIT"),
+         VILL = toupper(VILL)) %>%   #met tout en majuscules
+  mutate(lien = paste(ifelse(str_detect(CPLA,"^97"),str_sub(CPLA,1,3),str_sub(CPLA,1,2)),VILL)) %>% # SI DOM TOM (97) , prend les 3 premiers chiffres
+  mutate(lien = str_replace (lien,"SAINTES","STES"),
+         lien = str_replace (lien,"SAINTE","STE"),
+         lien = str_replace (lien,"SAINTS","STS"),
+         lien = str_replace (lien,"SAINT","ST"),
+         lien = str_replace_all (lien,"[-']"," "), #remplace les tirets et apostrophes par des espaces
+  ) %>% 
+  left_join(communes2, by = "lien") %>%
   
+  mutate(CINS = case_when(
+    is.na(CINS)~ DEPCOM,
+    TRUE~ CINS))
+#fin complétage du code insee--------------------------------------------------------
+# après complétage, 1554 codes insee ne sont pas complétés
+# à compléter pour tout remplir CINS
+    
+
+base_intermediaire3 <- base_intermediaire2 %>% 
+  filter(!is.na(CINS)) %>%  # filtre pour ne garder que les lignes avec code commune
+  select(date = DATP,DEPCOM = CINS, type_logt = NALO) %>%
+  mutate(type_logt = case_when(
+    type_logt == 1 ~ "individuel",
+    type_logt == 2 ~ "collectif",
+    TRUE ~ NA))%>%
+  arrange(DEPCOM)
+
+#  dénombrement croisements type et état
+eco_ptz1 <- base_intermediaire3 %>%
+  group_by(date,DEPCOM,type_logt) %>%
+  summarise(valeur = length(DEPCOM)) %>%
+  ungroup()
+eco_ptz2 <- base_intermediaire3 %>%
+  group_by(date,DEPCOM) %>%
+  summarise(valeur = length(DEPCOM)) %>%
+  ungroup() %>% 
+  mutate(type_logt = "total") %>% 
+  select(date,DEPCOM,type_logt,valeur)
+eco_ptz <- bind_rows( eco_ptz1,eco_ptz2) %>%
+  mutate(date=make_date(date,12,31)) %>%
+  filter(!str_starts(DEPCOM,"97"),!str_starts(DEPCOM,"98"))
+
+
+# liste des communes de France
+liste_communes_france <- communes %>% select(DEPCOM) %>%    pull() %>% as.character()
+
+eco_ptz <- cogifier(eco_ptz, epci = F, departements = F,regions = F, metro = F) %>%
+  select (depcom = CodeZone, date, variable=type_logt, valeur) %>%
+  mutate(depcom = forcats::fct_drop(.data$depcom)) %>% #enlève les facteurs inutiles
+  mutate(depcom = fct_expand(depcom, liste_communes_france)) %>%
+  complete(depcom, date, variable, fill = list(valeur = 0)) %>%
+  filter(!str_starts(depcom,"97"),!str_starts(depcom,"98")) %>%
+  mutate(depcom = forcats::fct_drop(.data$depcom)) %>%   #enlève les facteurs inutiles
+  pivot_wider(names_from = variable,values_from = valeur)
+
+save(eco_ptz,file="eco_ptz_chargement.RData")
+
+
 
 
  
-- 
GitLab


From a56d311e629f5e5dc789b67736e544e2d306b229 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Wed, 19 Feb 2025 18:18:07 +0100
Subject: [PATCH 03/16] test sur les actions

---
 data-raw/chargement_eco_ptz.R | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 7a1f179..2743d51 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -55,7 +55,9 @@ base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
     TTRV == "4" ~ 1,
     TRUE~ NALO))
 
-
+# repérage des actions
+test_actions <- BASE_ECO_PTZ_DHUP %>% 
+  select(DATP,CTA1,CTA2,CTA3,CTA4,CTA5,CTA6,CTTA1,CTTA2,CTTA3,CTTA4,CTTA5,CTTA6,CTTA7)
 
 
 #complétage du code insee--------------------------------------------------------
-- 
GitLab


From 6fdfa966557316220e3c98f9dd8405ea1b195107 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Fri, 21 Feb 2025 17:48:01 +0100
Subject: [PATCH 04/16] debut ajout des montants par type

---
 data-raw/chargement_eco_ptz.R | 108 ++++++++++++++++++++++++++++++----
 1 file changed, 97 insertions(+), 11 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 2743d51..8a18f82 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -33,6 +33,23 @@ rm(list = ls())
 # DREZ : Durée de l’éco-prêt
 # MTPR : Montant de l’éco-prêt (dernier déclaré)
 
+# Actions
+# avant 2019
+# CTA1: isolation thermique des toitures
+# CTA2: isolation thermique des murs
+# CTA3: isolation thermique des parois vitrées et portes donnant sur l'extérieur
+# CTA4: syst. chauf./PEC sanitaire
+# CTA5: Equipts. chauf./énergie ren.
+# CTA6: Equipts. PEC/énergi ren.
+# à compter du 1/7/2019
+# CTTA1: isolation toiture
+# CTTA2: isolation mur
+# CTTA3: planchers bas
+# CTTA4: isolation parois vitrées
+# CTTA5: syst. chauf/PEC sanitaire
+# CTTA6: équipts chauf/énergie renouvelable
+# CTTA7: équipts PEC/énergie renouvelable
+
 
 # paramêtres
 millesime = 2023 #millesime du fichier
@@ -45,7 +62,7 @@ BASE_ECO_PTZ_DHUP<- read_delim(paste0("/nfs/data/partage-PTZ-EPTZ/PTZ-EPTZ/BASE_
 base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
   mutate(DATP = str_sub(DATP,1,4)) %>% 
   filter (DATP >= annee_conservee) %>%
-  select(DATP,CINS,CPLA,VILL,NALO,TTRV,CSEN) %>%  
+  select(DATP,CINS,CPLA,VILL,NALO,TTRV,CSEN,CTA1,CTA2,CTA3,CTA4,CTA5,CTA6,CTTA1,CTTA2,CTTA3,CTTA4,CTTA5,CTTA6,CTTA7) %>%  
 # application des filtres
 # CSEN est"V" (valide)
 # si type de travaux (TTRV) = 4 (réhabilitation de système d’assainissement non collectif),
@@ -53,11 +70,8 @@ base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
   filter(CSEN == "V") %>%
   mutate(NALO = case_when(
     TTRV == "4" ~ 1,
-    TRUE~ NALO))
-
-# repérage des actions
-test_actions <- BASE_ECO_PTZ_DHUP %>% 
-  select(DATP,CTA1,CTA2,CTA3,CTA4,CTA5,CTA6,CTTA1,CTTA2,CTTA3,CTTA4,CTTA5,CTTA6,CTTA7)
+    TRUE~ NALO)) %>% 
+  select(-CSEN,-TTRV)
 
 
 #complétage du code insee--------------------------------------------------------
@@ -95,7 +109,6 @@ base_intermediaire2 <- base_intermediaire %>%
          lien = str_replace_all (lien,"[-']"," "), #remplace les tirets et apostrophes par des espaces
   ) %>% 
   left_join(communes2, by = "lien") %>%
-  
   mutate(CINS = case_when(
     is.na(CINS)~ DEPCOM,
     TRUE~ CINS))
@@ -104,30 +117,103 @@ base_intermediaire2 <- base_intermediaire %>%
 # à compléter pour tout remplir CINS
     
 
+#---------------------------------------------------------------------------------------------  
+
+# #test reconnaissance : marche pas
+# retrouve_cinsee <- function(codepostal){
+#   library(dplyr)
+#   library(httr)
+#   library(jsonlite)
+#   url <- "https://geo.api.gouv.fr/communes"
+#   response <- GET(url, query = list(codePostal = codepostal))
+#   # response <- GET(url, query = list(codePostal = "35800"))
+#   c_insee <- fromJSON(content(response, "text"))
+#  
+#   if (length(c_insee) == 0) {
+#     return(NA)
+#     # return(data[[1]]$code)
+#   } else {
+#     c_insee2 <- c_insee %>%
+#       as.data.frame() %>%
+#       select(-codesPostaux) %>%
+#       # mutate(population) = as.numeric(population) %>%
+#       filter(population == max(population)) %>%
+#       select(nom) %>% pull()
+#     return(c_insee2)
+#   }
+# }
+# 
+# aaa <- retrouve_cinsee("35800")   # ça ça fonctionne, mais pas pour la colonne
+# 
+# 
+# base_intermediaire20 <- base_intermediaire %>%
+#   mutate(VILL = iconv(VILL, from = "UTF-8", to = "ASCII//TRANSLIT"),
+#          VILL = toupper(VILL))
+# base_intermediaire30 <- base_intermediaire20 %>%
+#  mutate(cinsee20 = retrouve_cinsee("35800"))
+# base_intermediaire20$code_insee <- mapply(retrouve_cinsee, base_intermediaire20$CPLA)
+# base_intermediaire20 <- base_intermediaire20 %>% 
+#   mutate(code_insee = retrouve_cinsee(CPLA))
+
+#---------------------------------------------------------------------------------------------  
+ 
 base_intermediaire3 <- base_intermediaire2 %>% 
   filter(!is.na(CINS)) %>%  # filtre pour ne garder que les lignes avec code commune
-  select(date = DATP,DEPCOM = CINS, type_logt = NALO) %>%
+  select(-CPLA,-VILL,-lien,-DEPCOM) %>% 
+  rename(date = "DATP",DEPCOM = "CINS", type_logt = "NALO") %>%
   mutate(type_logt = case_when(
     type_logt == 1 ~ "individuel",
     type_logt == 2 ~ "collectif",
     TRUE ~ NA))%>%
   arrange(DEPCOM)
 
+# calculs nombre de prets individuels et collectifs--------------------------------------------------
 #  dénombrement croisements type et état
-eco_ptz1 <- base_intermediaire3 %>%
+eco_ptz1a <- base_intermediaire3 %>%
   group_by(date,DEPCOM,type_logt) %>%
   summarise(valeur = length(DEPCOM)) %>%
   ungroup()
-eco_ptz2 <- base_intermediaire3 %>%
+eco_ptz1b <- base_intermediaire3 %>%
   group_by(date,DEPCOM) %>%
   summarise(valeur = length(DEPCOM)) %>%
   ungroup() %>% 
   mutate(type_logt = "total") %>% 
   select(date,DEPCOM,type_logt,valeur)
-eco_ptz <- bind_rows( eco_ptz1,eco_ptz2) %>%
+eco_ptz1 <- bind_rows( eco_ptz1a,eco_ptz1b) %>%
   mutate(date=make_date(date,12,31)) %>%
   filter(!str_starts(DEPCOM,"97"),!str_starts(DEPCOM,"98"))
 
+# calculs montants par type--------------------------------------------------
+
+eco_ptz2a <- base_intermediaire3 %>%
+  select(-type_logt) %>% 
+  group_by(date,DEPCOM) %>% 
+  summarise(CTA1=sum(CTA1,na.rm=TRUE),
+            CTA2=sum(CTA2,na.rm=TRUE),
+            CTA3=sum(CTA3,na.rm=TRUE),
+            CTA4=sum(CTA4,na.rm=TRUE),
+            CTA5=sum(CTA5,na.rm=TRUE),
+            CTA6=sum(CTA6,na.rm=TRUE),
+            CTTA1=sum(CTTA1,na.rm=TRUE),
+            CTTA2=sum(CTTA2,na.rm=TRUE),
+            CTTA3=sum(CTTA3,na.rm=TRUE),
+            CTTA4=sum(CTTA4,na.rm=TRUE),
+            CTTA5=sum(CTTA5,na.rm=TRUE),
+            CTTA6=sum(CTTA6,na.rm=TRUE),
+            CTTA7=sum(CTTA7,na.rm=TRUE))
+
+# faire cogification et ajouter zonages suppra
+
+
+
+
+
+
+
+
+
+
+
 
 # liste des communes de France
 liste_communes_france <- communes %>% select(DEPCOM) %>%    pull() %>% as.character()
-- 
GitLab


From 3f9c8d5f77e8fd05a9c4813651a369c76b78ed3c Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Mon, 24 Feb 2025 18:20:28 +0100
Subject: [PATCH 05/16] chargement et cogification debut indicateurs

---
 data-raw/chargement_eco_ptz.R   | 131 +++++++++++++++++++++++---------
 data-raw/cogification_eco_ptz.R | 111 ++++++++++++++-------------
 data-raw/indicateur_eco_ptz.R   |  44 +++++++++++
 3 files changed, 197 insertions(+), 89 deletions(-)
 create mode 100644 data-raw/indicateur_eco_ptz.R

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 8a18f82..da9c506 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -172,16 +172,15 @@ base_intermediaire3 <- base_intermediaire2 %>%
 eco_ptz1a <- base_intermediaire3 %>%
   group_by(date,DEPCOM,type_logt) %>%
   summarise(valeur = length(DEPCOM)) %>%
-  ungroup()
+  ungroup() %>% 
+  rename(variable = type_logt)
 eco_ptz1b <- base_intermediaire3 %>%
   group_by(date,DEPCOM) %>%
   summarise(valeur = length(DEPCOM)) %>%
   ungroup() %>% 
   mutate(type_logt = "total") %>% 
-  select(date,DEPCOM,type_logt,valeur)
-eco_ptz1 <- bind_rows( eco_ptz1a,eco_ptz1b) %>%
-  mutate(date=make_date(date,12,31)) %>%
-  filter(!str_starts(DEPCOM,"97"),!str_starts(DEPCOM,"98"))
+  select(date,DEPCOM,type_logt,valeur) %>% 
+  rename(variable = type_logt)
 
 # calculs montants par type--------------------------------------------------
 
@@ -200,12 +199,25 @@ eco_ptz2a <- base_intermediaire3 %>%
             CTTA4=sum(CTTA4,na.rm=TRUE),
             CTTA5=sum(CTTA5,na.rm=TRUE),
             CTTA6=sum(CTTA6,na.rm=TRUE),
-            CTTA7=sum(CTTA7,na.rm=TRUE))
-
-# faire cogification et ajouter zonages suppra
-
-
+            CTTA7=sum(CTTA7,na.rm=TRUE))%>% 
+  pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
+  ungroup()  
+
+# calculs nombres par type--------------------------------------------------
+eco_ptz2b <- base_intermediaire3 %>%
+  select(-type_logt)
+eco_ptz2b[eco_ptz2b == 0] <- NA 
+eco_ptz2b <- eco_ptz2b %>% 
+  group_by(date,DEPCOM) %>% 
+  summarise(across(everything(), ~ sum(!is.na(.)))) %>% 
+  pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
+  ungroup() %>% 
+  mutate(variable = paste0("nb_",variable))
 
+# regroupements------------------------------------------------------------------
+eco_ptz <- bind_rows( eco_ptz1a,eco_ptz1b, eco_ptz2a,eco_ptz2b) %>%
+  mutate(date=make_date(date,12,31)) %>%
+  filter(!str_starts(DEPCOM,"97"),!str_starts(DEPCOM,"98"))
 
 
 
@@ -218,8 +230,9 @@ eco_ptz2a <- base_intermediaire3 %>%
 # liste des communes de France
 liste_communes_france <- communes %>% select(DEPCOM) %>%    pull() %>% as.character()
 
+#cogifier, ajouter zonages supra et complete
 eco_ptz <- cogifier(eco_ptz, epci = F, departements = F,regions = F, metro = F) %>%
-  select (depcom = CodeZone, date, variable=type_logt, valeur) %>%
+  select (depcom = CodeZone, date, variable, valeur) %>%
   mutate(depcom = forcats::fct_drop(.data$depcom)) %>% #enlève les facteurs inutiles
   mutate(depcom = fct_expand(depcom, liste_communes_france)) %>%
   complete(depcom, date, variable, fill = list(valeur = 0)) %>%
@@ -230,30 +243,76 @@ eco_ptz <- cogifier(eco_ptz, epci = F, departements = F,regions = F, metro = F)
 save(eco_ptz,file="eco_ptz_chargement.RData")
 
 
-
-
- 
-
- 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+# # versement dans le sgbd/datamart.portrait_territoires -------------
+# poster_data(data = eco_ptz,
+#             db = "datamart",
+#             schema = "portrait_territoires", 
+#             table = "source_eco_ptz",
+#             post_row_name = FALSE, 
+#             overwrite = TRUE,
+#             droits_schema = TRUE,
+#             pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
+#             user = "does")
+# 
+# # METADONNEES------------------------------------
+# 
+# ## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
+# var <- setdiff(names(eco_ptz), c("depcom", "date"))
+# 
+# ## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
+# nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
+#   basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
+#   gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
+# 
+# ## authentification google sheet grâce au .Renviron
+# gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
+# gs4_deauth()
+# 
+# 
+# 
+# ## chargement du référentiel indicateurs google sheet
+# metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
+#                                   sheet = "indicateurs") %>%
+#   # on ne garde que les variables concernées par le présent script de chargement
+#   filter(source == nom_script_sce) %>% 
+#   # on ajoute l'unité dans le libellé de la variable
+#   mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
+#   select(variable, libelle_variable) %>% 
+#   # ajout des libellés pour depcom et date
+#   bind_rows(
+#     tribble(
+#       ~variable, ~libelle_variable,
+#       "depcom", "Code INSEE de la commune",
+#       "date", "Millesime"
+#     )
+#   )
+# 
+# ## Vérification que la documentation des indicateurs est complète
+# all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
+# 
+# ## Envoi des libellés de variable dans le SGBD
+# post_dico_attr(dico = metadata_indicateur, table = "source_eco_ptz", schema = "portrait_territoires",
+#                db = "datamart", user = "does")
+# 
+# ## Récupération des métadonnées de la source
+# nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
+#   str_replace("indicateur_", "") %>%
+#   str_replace("_cogiter|_cog$", "")
+# 
+# metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
+#                               sheet = "sources") %>%
+#   filter(source == nom_sce) %>% 
+#   mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
+#   pull(com_table) %>%
+#   # ajout de complement sur la généalogie
+#   paste0(".\n", "Chargement des donn\u00e9es sur Geokit3")
+# 
+# ## commentaires de la table
+# 
+# commenter_table(comment = metadata_source,
+#                 db = "datamart",
+#                 schema = "portrait_territoires",
+#                 table = "source_eco_ptz", 
+#                 user = "does")
 
 
diff --git a/data-raw/cogification_eco_ptz.R b/data-raw/cogification_eco_ptz.R
index 724368c..97b0cb7 100644
--- a/data-raw/cogification_eco_ptz.R
+++ b/data-raw/cogification_eco_ptz.R
@@ -11,61 +11,66 @@ library(datalibaba)
 
 rm(list = ls())
 
-source_eco_ptz <- importer_data(db = "datamart",
-                             schema = "portrait_territoires",
-                             table = "source_eco_ptz")
+load("eco_ptz_chargement.RData")
+source_eco_ptz <- eco_ptz
+
+# source_eco_ptz <- importer_data(db = "datamart",
+#                              schema = "portrait_territoires",
+#                              table = "source_eco_ptz")
 
 cogifiee_eco_ptz<-cogifier(source_eco_ptz %>% rename(DEPCOM=depcom))%>% 
   mutate_if(is.factor,as.character)
 
-poster_data(data = cogifiee_eco_ptz,
-            db = "datamart",
-            schema = "portrait_territoires", 
-            table = "cogifiee_eco_ptz",
-            pk = c("TypeZone", "Zone", "CodeZone", "date"),
-            post_row_name = FALSE, 
-            overwrite = TRUE,
-            droits_schema = TRUE,
-            user = "does")
-
-# commentaires de la table et des variables -------------
-
-# récupération des commentaires de la table source
-dico_var <- get_table_comments(
-  db = "datamart",
-  schema = "portrait_territoires",
-  table = "source_eco_ptz",
-  user = "does")
-
-# commentaire de la table
-comm_table <- filter(dico_var, is.na(nom_col)) %>% 
-  pull(commentaire) %>% 
-  gsub("\nCommentaire.*$", "", .)
-
-commenter_table(
-  comment = comm_table,
-  db = "datamart",
-  schema = "portrait_territoires",
-  table = "cogifiee_eco_ptz",
-  user = "does"
-)
-
-# commentaire des variables
-comm_champ <- select(dico_var, nom_col, commentaire) %>% 
-  filter(!is.na(nom_col), nom_col != "depcom") %>% 
-  bind_rows(
-    tribble(
-      ~nom_col, ~commentaire,
-      "TypeZone", "Type de territoire",
-      "Zone", " Nom du territoire",
-      "CodeZone", "Code INSEE du territoire"
-    )
-  )
+save(cogifiee_eco_ptz,file="eco_ptz_cogifiee.RData")
 
-post_dico_attr(
-  dico = comm_champ,
-  db = "datamart",
-  schema = "portrait_territoires",
-  table = "cogifiee_eco_ptz",
-  user = "does"
-)
+# poster_data(data = cogifiee_eco_ptz,
+#             db = "datamart",
+#             schema = "portrait_territoires", 
+#             table = "cogifiee_eco_ptz",
+#             pk = c("TypeZone", "Zone", "CodeZone", "date"),
+#             post_row_name = FALSE, 
+#             overwrite = TRUE,
+#             droits_schema = TRUE,
+#             user = "does")
+# 
+# # commentaires de la table et des variables -------------
+# 
+# # récupération des commentaires de la table source
+# dico_var <- get_table_comments(
+#   db = "datamart",
+#   schema = "portrait_territoires",
+#   table = "source_eco_ptz",
+#   user = "does")
+# 
+# # commentaire de la table
+# comm_table <- filter(dico_var, is.na(nom_col)) %>% 
+#   pull(commentaire) %>% 
+#   gsub("\nCommentaire.*$", "", .)
+# 
+# commenter_table(
+#   comment = comm_table,
+#   db = "datamart",
+#   schema = "portrait_territoires",
+#   table = "cogifiee_eco_ptz",
+#   user = "does"
+# )
+# 
+# # commentaire des variables
+# comm_champ <- select(dico_var, nom_col, commentaire) %>% 
+#   filter(!is.na(nom_col), nom_col != "depcom") %>% 
+#   bind_rows(
+#     tribble(
+#       ~nom_col, ~commentaire,
+#       "TypeZone", "Type de territoire",
+#       "Zone", " Nom du territoire",
+#       "CodeZone", "Code INSEE du territoire"
+#     )
+#   )
+# 
+# post_dico_attr(
+#   dico = comm_champ,
+#   db = "datamart",
+#   schema = "portrait_territoires",
+#   table = "cogifiee_eco_ptz",
+#   user = "does"
+# )
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
new file mode 100644
index 0000000..f887fb4
--- /dev/null
+++ b/data-raw/indicateur_eco_ptz.R
@@ -0,0 +1,44 @@
+
+# indicateur_eco_ptz
+
+# librairies -------------
+library(dplyr)
+library(tidyr)
+library(lubridate)
+library(COGiter)
+library(DBI)
+library(RPostgreSQL)
+library(datalibaba)
+library(googlesheets4)
+library(purrr)
+library(stringr)
+
+rm(list=ls())
+
+# # chargement data -------------
+# cogifiee_eco_ptz <- importer_data(db = "datamart",
+#                                schema = "portrait_territoires",
+#                                table = "cogifiee_eco_ptz")
+load("eco_ptz_cogifiee.RData")
+
+data_cogifiee<-pivot_longer(cogifiee_eco_ptz,
+                            cols = CTA1 : total,
+                            names_to = "variable",
+                            values_to = "valeur") %>%
+  mutate_if(is.character,as.factor)
+
+## authentification google sheet grâce au .Renviron
+gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
+gs4_deauth()
+
+
+# supprimer les colonnes individuel, collectif et total
+# calculer pour table nombre et table montants, le taux de chaque CTA (group byTypeZone code zone, zone, date)
+# mutate taux =(valeur/sum(valeur))
+#supprimer les lignes  de calcul
+#  regrouper les 2 tableaux
+
+
+
+
+
-- 
GitLab


From 7cba2ce4345e288a667abc0264bedc0d6cc94ad2 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Tue, 25 Feb 2025 16:00:39 +0100
Subject: [PATCH 06/16] fin de creation des indicateurs

---
 data-raw/chargement_eco_ptz.R |  59 ++++++++++++-------
 data-raw/indicateur_eco_ptz.R | 107 +++++++++++++++++++++++++++++++---
 2 files changed, 135 insertions(+), 31 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index da9c506..2683870 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -184,28 +184,51 @@ eco_ptz1b <- base_intermediaire3 %>%
 
 # calculs montants par type--------------------------------------------------
 
+# eco_ptz2a <- base_intermediaire3 %>%
+#   select(-type_logt) %>% 
+#   group_by(date,DEPCOM) %>% 
+#   summarise(CTA1=sum(CTA1,na.rm=TRUE),
+#             CTA2=sum(CTA2,na.rm=TRUE),
+#             CTA3=sum(CTA3,na.rm=TRUE),
+#             CTA4=sum(CTA4,na.rm=TRUE),
+#             CTA5=sum(CTA5,na.rm=TRUE),
+#             CTA6=sum(CTA6,na.rm=TRUE),
+#             CTTA1=sum(CTTA1,na.rm=TRUE),
+#             CTTA2=sum(CTTA2,na.rm=TRUE),
+#             CTTA3=sum(CTTA3,na.rm=TRUE),
+#             CTTA4=sum(CTTA4,na.rm=TRUE),
+#             CTTA5=sum(CTTA5,na.rm=TRUE),
+#             CTTA6=sum(CTTA6,na.rm=TRUE),
+#             CTTA7=sum(CTTA7,na.rm=TRUE))%>% 
+#   pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
+#   ungroup()  
+
 eco_ptz2a <- base_intermediaire3 %>%
   select(-type_logt) %>% 
   group_by(date,DEPCOM) %>% 
-  summarise(CTA1=sum(CTA1,na.rm=TRUE),
-            CTA2=sum(CTA2,na.rm=TRUE),
-            CTA3=sum(CTA3,na.rm=TRUE),
-            CTA4=sum(CTA4,na.rm=TRUE),
-            CTA5=sum(CTA5,na.rm=TRUE),
-            CTA6=sum(CTA6,na.rm=TRUE),
-            CTTA1=sum(CTTA1,na.rm=TRUE),
-            CTTA2=sum(CTTA2,na.rm=TRUE),
+  summarise(CTTA1=sum(CTTA1,na.rm=TRUE)+sum(CTA1,na.rm=TRUE),
+            CTTA2=sum(CTTA2,na.rm=TRUE)+sum(CTA2,na.rm=TRUE),
             CTTA3=sum(CTTA3,na.rm=TRUE),
-            CTTA4=sum(CTTA4,na.rm=TRUE),
-            CTTA5=sum(CTTA5,na.rm=TRUE),
-            CTTA6=sum(CTTA6,na.rm=TRUE),
-            CTTA7=sum(CTTA7,na.rm=TRUE))%>% 
+            CTTA4=sum(CTTA4,na.rm=TRUE)+sum(CTA3,na.rm=TRUE),
+            CTTA5=sum(CTTA5,na.rm=TRUE)+sum(CTA4,na.rm=TRUE),
+            CTTA6=sum(CTTA6,na.rm=TRUE)+sum(CTA5,na.rm=TRUE),
+            CTTA7=sum(CTTA7,na.rm=TRUE)+sum(CTA6,na.rm=TRUE))%>% 
   pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
-  ungroup()  
+  ungroup() 
+
 
 # calculs nombres par type--------------------------------------------------
+# eco_ptz2b <- base_intermediaire3 %>%
+#   select(-type_logt)
 eco_ptz2b <- base_intermediaire3 %>%
-  select(-type_logt)
+  mutate(CTTA1= CTTA1 + CTA1,
+         CTTA2= CTTA2 + CTA2,
+         CTTA3= CTTA3,
+         CTTA4= CTTA4 + CTA3,
+         CTTA5= CTTA5 + CTA4,
+         CTTA6= CTTA6 + CTA5,
+         CTTA7= CTTA7 + CTA6)%>%
+  select(-type_logt,-CTA1,-CTA2,-CTA3,-CTA4,-CTA5,-CTA6)
 eco_ptz2b[eco_ptz2b == 0] <- NA 
 eco_ptz2b <- eco_ptz2b %>% 
   group_by(date,DEPCOM) %>% 
@@ -219,14 +242,6 @@ eco_ptz <- bind_rows( eco_ptz1a,eco_ptz1b, eco_ptz2a,eco_ptz2b) %>%
   mutate(date=make_date(date,12,31)) %>%
   filter(!str_starts(DEPCOM,"97"),!str_starts(DEPCOM,"98"))
 
-
-
-
-
-
-
-
-
 # liste des communes de France
 liste_communes_france <- communes %>% select(DEPCOM) %>%    pull() %>% as.character()
 
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
index f887fb4..71beed1 100644
--- a/data-raw/indicateur_eco_ptz.R
+++ b/data-raw/indicateur_eco_ptz.R
@@ -22,21 +22,110 @@ rm(list=ls())
 load("eco_ptz_cogifiee.RData")
 
 data_cogifiee<-pivot_longer(cogifiee_eco_ptz,
-                            cols = CTA1 : total,
+                            cols = collectif : total,
                             names_to = "variable",
                             values_to = "valeur") %>%
   mutate_if(is.character,as.factor)
 
-## authentification google sheet grâce au .Renviron
-gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
-gs4_deauth()
+#table des montants
+data_montants <- data_cogifiee %>% 
+  filter( grepl("^CT", variable)) %>% 
+  group_by(TypeZone,Zone,CodeZone,date) %>% 
+  mutate(valeur = round(valeur/sum(valeur)*100,2),
+         variable = paste("part_montant_",variable)) %>% 
+  ungroup()
 
+# table des nombres
+data_nombre <- data_cogifiee %>% 
+  filter( grepl("^nb", variable)) %>% 
+  group_by(TypeZone,Zone,CodeZone,date) %>% 
+  mutate(valeur = round(valeur/sum(valeur)*100,2),
+         variable = paste("part_",variable)) %>%
+  ungroup()
 
-# supprimer les colonnes individuel, collectif et total
-# calculer pour table nombre et table montants, le taux de chaque CTA (group byTypeZone code zone, zone, date)
-# mutate taux =(valeur/sum(valeur))
-#supprimer les lignes  de calcul
-#  regrouper les 2 tableaux
+# regroupement des tables
+indicateur_eco_ptz <- bind_rows(data_montants,data_nombre)
+indicateur_eco_ptz$valeur<-na_if(indicateur_eco_ptz$valeur,NaN)
+indicateur_eco_ptz <- indicateur_eco_ptz %>% 
+  pivot_wider(names_from = variable,values_from = valeur)
+
+save(indicateur_eco_ptz,file="eco_ptz_indicateurs.RData")  
+
+
+
+# # versement dans le sgbd/datamart.portrait_territoires -------------
+# poster_data(data = indicateur_eco_ptz,
+#             db = "datamart",
+#             schema = "portrait_territoires", 
+#             table = "indicateur_eco_ptz",
+#             pk = c("TypeZone", "Zone", "CodeZone", "date"),
+#             post_row_name = FALSE, 
+#             overwrite = TRUE,
+#             droits_schema = TRUE,
+#             user = "does")
+# 
+# # METADONNEES------------------------------------
+# 
+# ## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
+# var <- setdiff(names(indicateur_eco_ptz), c("TypeZone", "Zone" , "CodeZone" , "date"))
+# 
+# ## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
+# nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
+#   basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
+#   gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
+# 
+# ## authentification google sheet grâce au .Renviron
+# gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
+# gs4_deauth()
+# 
+# 
+# 
+# ## chargement du référentiel indicateurs google sheet
+# metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
+#                                   sheet = "indicateurs") %>%
+#   # on ne garde que les variables concernées par le présent script de chargement
+#   filter(source == nom_script_sce) %>% 
+#   # on ajoute l'unité dans le libellé de la variable
+#   mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
+#   select(variable, libelle_variable) %>% 
+#   # ajout des libellés pour depcom et date
+#   bind_rows(
+#     tribble(
+#       ~variable, ~libelle_variable,
+#       "TypeZone", "Type de territoire",
+#       "Zone", " Nom du territoire",
+#       "CodeZone", "Code INSEE du territoire",
+#       "date", "Millesime"
+#     )
+#   )
+# 
+# ## Vérification que la documentation des indicateurs est complète
+# all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
+# 
+# ## Envoi des libellés de variable dans le SGBD
+# post_dico_attr(dico = metadata_indicateur, table = "indicateur_eco_ptz", schema = "portrait_territoires",
+#                db = "datamart", user = "does")
+# 
+# ## Récupération des métadonnées de la source
+# nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
+#   str_replace("indicateur_", "") %>%
+#   str_replace("_cogiter|_cog$", "")
+# 
+# metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
+#                               sheet = "sources") %>%
+#   filter(source == nom_sce) %>% 
+#   mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
+#   pull(com_table) %>%
+#   # ajout de complement sur la généalogie
+#   paste0(".\n", "Chargement des donn\u00e9es sur serveur rstudio CGDD")
+# 
+# ## commentaires de la table
+# 
+# commenter_table(comment = metadata_source,
+#                 db = "datamart",
+#                 schema = "portrait_territoires",
+#                 table = "indicateur_eco_ptz", 
+#                 user = "does")
 
 
 
-- 
GitLab


From 3e96ed3a8f73ae4be637c1da3fdc86822c42e109 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Fri, 28 Feb 2025 16:58:09 +0100
Subject: [PATCH 07/16] modification des identifiants

---
 data-raw/chargement_eco_ptz.R     |  62 ++++++-----------
 data-raw/chargement_eco_ptz_old.R | 109 ------------------------------
 data-raw/indicateur_eco_ptz.R     |  10 +--
 3 files changed, 26 insertions(+), 155 deletions(-)
 delete mode 100644 data-raw/chargement_eco_ptz_old.R

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 2683870..70d8506 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -56,7 +56,8 @@ millesime = 2023 #millesime du fichier
 annee_conservee = 2013 # on supprime les années antérieures
 
 BASE_ECO_PTZ_DHUP<- read_delim(paste0("/nfs/data/partage-PTZ-EPTZ/PTZ-EPTZ/BASE_EPZ_DHUP_",millesime,"_DREAL.csv"),
-                          delim = ";", escape_double = FALSE, trim_ws = TRUE)
+                          delim = ";", escape_double = FALSE, locale = locale(decimal_mark = ","), trim_ws = TRUE)
+
 
 # suppression des années anciennes
 base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
@@ -92,7 +93,6 @@ communes2b <- communes2 %>%   #creation d'une table dans laquelle on remplace "s
   mutate(lien = str_replace (lien,"LE ",""),
          lien = str_replace (lien,"LES ",""),
          lien = ifelse(str_detect(lien,"LA LONGEVILLE"), lien, str_replace (lien,"LA ","")),
-         # lien = str_replace (lien,"LA ",""),
          lien = str_replace (lien,"L ","")  
   )
 communes2 <- rbind(communes2,communes2a,communes2b) %>% 
@@ -162,8 +162,8 @@ base_intermediaire3 <- base_intermediaire2 %>%
   select(-CPLA,-VILL,-lien,-DEPCOM) %>% 
   rename(date = "DATP",DEPCOM = "CINS", type_logt = "NALO") %>%
   mutate(type_logt = case_when(
-    type_logt == 1 ~ "individuel",
-    type_logt == 2 ~ "collectif",
+    type_logt == 1 ~ "nb_eptz.maison_individuelle",
+    type_logt == 2 ~ "nb_eptz.appartement",
     TRUE ~ NA))%>%
   arrange(DEPCOM)
 
@@ -178,57 +178,37 @@ eco_ptz1b <- base_intermediaire3 %>%
   group_by(date,DEPCOM) %>%
   summarise(valeur = length(DEPCOM)) %>%
   ungroup() %>% 
-  mutate(type_logt = "total") %>% 
+  mutate(type_logt = "nb_eptz.total") %>% 
   select(date,DEPCOM,type_logt,valeur) %>% 
   rename(variable = type_logt)
 
 # calculs montants par type--------------------------------------------------
 
-# eco_ptz2a <- base_intermediaire3 %>%
-#   select(-type_logt) %>% 
-#   group_by(date,DEPCOM) %>% 
-#   summarise(CTA1=sum(CTA1,na.rm=TRUE),
-#             CTA2=sum(CTA2,na.rm=TRUE),
-#             CTA3=sum(CTA3,na.rm=TRUE),
-#             CTA4=sum(CTA4,na.rm=TRUE),
-#             CTA5=sum(CTA5,na.rm=TRUE),
-#             CTA6=sum(CTA6,na.rm=TRUE),
-#             CTTA1=sum(CTTA1,na.rm=TRUE),
-#             CTTA2=sum(CTTA2,na.rm=TRUE),
-#             CTTA3=sum(CTTA3,na.rm=TRUE),
-#             CTTA4=sum(CTTA4,na.rm=TRUE),
-#             CTTA5=sum(CTTA5,na.rm=TRUE),
-#             CTTA6=sum(CTTA6,na.rm=TRUE),
-#             CTTA7=sum(CTTA7,na.rm=TRUE))%>% 
-#   pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
-#   ungroup()  
-
 eco_ptz2a <- base_intermediaire3 %>%
   select(-type_logt) %>% 
   group_by(date,DEPCOM) %>% 
-  summarise(CTTA1=sum(CTTA1,na.rm=TRUE)+sum(CTA1,na.rm=TRUE),
-            CTTA2=sum(CTTA2,na.rm=TRUE)+sum(CTA2,na.rm=TRUE),
-            CTTA3=sum(CTTA3,na.rm=TRUE),
-            CTTA4=sum(CTTA4,na.rm=TRUE)+sum(CTA3,na.rm=TRUE),
-            CTTA5=sum(CTTA5,na.rm=TRUE)+sum(CTA4,na.rm=TRUE),
-            CTTA6=sum(CTTA6,na.rm=TRUE)+sum(CTA5,na.rm=TRUE),
-            CTTA7=sum(CTTA7,na.rm=TRUE)+sum(CTA6,na.rm=TRUE))%>% 
+  summarise(eptz.ctta1=sum(CTTA1,na.rm=TRUE)+sum(CTA1,na.rm=TRUE),
+            eptz.ctta2=sum(CTTA2,na.rm=TRUE)+sum(CTA2,na.rm=TRUE),
+            eptz.ctta3=sum(CTTA3,na.rm=TRUE),
+            eptz.ctta4=sum(CTTA4,na.rm=TRUE)+sum(CTA3,na.rm=TRUE),
+            eptz.ctta5=sum(CTTA5,na.rm=TRUE)+sum(CTA4,na.rm=TRUE),
+            eptz.ctta6=sum(CTTA6,na.rm=TRUE)+sum(CTA5,na.rm=TRUE),
+            eptz.ctta7=sum(CTTA7,na.rm=TRUE)+sum(CTA6,na.rm=TRUE))%>% 
   pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
   ungroup() 
 
 
 # calculs nombres par type--------------------------------------------------
-# eco_ptz2b <- base_intermediaire3 %>%
-#   select(-type_logt)
 eco_ptz2b <- base_intermediaire3 %>%
-  mutate(CTTA1= CTTA1 + CTA1,
-         CTTA2= CTTA2 + CTA2,
-         CTTA3= CTTA3,
-         CTTA4= CTTA4 + CTA3,
-         CTTA5= CTTA5 + CTA4,
-         CTTA6= CTTA6 + CTA5,
-         CTTA7= CTTA7 + CTA6)%>%
-  select(-type_logt,-CTA1,-CTA2,-CTA3,-CTA4,-CTA5,-CTA6)
+  mutate(eptz.ctta1= CTTA1 + CTA1,
+         eptz.ctta2= CTTA2 + CTA2,
+         eptz.ctta3= CTTA3,
+         eptz.ctta4= CTTA4 + CTA3,
+         eptz.ctta5= CTTA5 + CTA4,
+         eptz.ctta6= CTTA6 + CTA5,
+         eptz.ctta7= CTTA7 + CTA6)%>%
+  select(date, DEPCOM,eptz.ctta1,eptz.ctta2,eptz.ctta3,eptz.ctta4,
+         eptz.ctta5,eptz.ctta6,eptz.ctta7)
 eco_ptz2b[eco_ptz2b == 0] <- NA 
 eco_ptz2b <- eco_ptz2b %>% 
   group_by(date,DEPCOM) %>% 
diff --git a/data-raw/chargement_eco_ptz_old.R b/data-raw/chargement_eco_ptz_old.R
deleted file mode 100644
index a2c01e7..0000000
--- a/data-raw/chargement_eco_ptz_old.R
+++ /dev/null
@@ -1,109 +0,0 @@
-
-# chargement_eco_ptz
-
-
-# librairies ---------
-library(readxl)
-library(tidyverse)
-library(tricky)
-library(lubridate)
-library(DBI)
-library(RPostgreSQL)
-library(datalibaba)
-library(googlesheets4)
-
-rm(list = ls())
-
-# chargement et calcul -----------
-# chargement des données Eco-PTZ (Eco Prêts à Taux Zéro) --------
-# fichier cree a partir d une requete geokit 3 :
-# "Dossiers publics/geokit3/Regions Pays de la Loire/DREAL/INDICATEURS TER DATA LAB/gk3_ECO_PTZ_france"
-eco_ptz <- read_excel("extdata/gk3_eco_ptz.xlsx",sheet=1) %>% 
-  set_standard_names()%>%
-  rename(date = date_d_emission_de_l_offre,
-         depcom = code_de_la_commune,
-         variable=eptz_libelle_nature_du_logement,
-         valeur=eptz_nombre_de_prets) %>% 
-  select(depcom,date,variable,valeur)%>% 
-  # filter(date>=2008) %>% 
-  mutate(date=make_date(date,12,31))%>%
-  mutate(variable=str_replace(variable,'Maison individuelle', "nb_eptz.maison_individuelle") %>% 
-           str_replace('Appartement',"nb_eptz.appartement"))%>%
-  mutate_if(is.character,as.factor) %>% 
-  complete(depcom,date,variable,fill = list(valeur =0)) %>% 
-  pivot_wider(names_from = variable,values_from = valeur)
-
-
-# versement dans le sgbd/datamart.portrait_territoires -------------
-poster_data(data = eco_ptz,
-            db = "datamart",
-            schema = "portrait_territoires", 
-            table = "source_eco_ptz",
-            post_row_name = FALSE, 
-            overwrite = TRUE,
-            droits_schema = TRUE,
-            pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
-            user = "does")
-
-# METADONNEES------------------------------------
-
-## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
-var <- setdiff(names(eco_ptz), c("depcom", "date"))
-
-## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
-nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
-  basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
-  gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
-
-## authentification google sheet grâce au .Renviron
-gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
-gs4_deauth()
-
-
-
-## chargement du référentiel indicateurs google sheet
-metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-                                  sheet = "indicateurs") %>%
-  # on ne garde que les variables concernées par le présent script de chargement
-  filter(source == nom_script_sce) %>% 
-  # on ajoute l'unité dans le libellé de la variable
-  mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
-  select(variable, libelle_variable) %>% 
-  # ajout des libellés pour depcom et date
-  bind_rows(
-    tribble(
-      ~variable, ~libelle_variable,
-      "depcom", "Code INSEE de la commune",
-      "date", "Millesime"
-    )
-  )
-
-## Vérification que la documentation des indicateurs est complète
-all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
-
-## Envoi des libellés de variable dans le SGBD
-post_dico_attr(dico = metadata_indicateur, table = "source_eco_ptz", schema = "portrait_territoires",
-               db = "datamart", user = "does")
-
-## Récupération des métadonnées de la source
-nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
-  str_replace("indicateur_", "") %>%
-  str_replace("_cogiter|_cog$", "")
-
-metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-                              sheet = "sources") %>%
-  filter(source == nom_sce) %>% 
-  mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
-  pull(com_table) %>%
-  # ajout de complement sur la généalogie
-  paste0(".\n", "Chargement des donn\u00e9es sur Geokit3")
-
-## commentaires de la table
-
-commenter_table(comment = metadata_source,
-                db = "datamart",
-                schema = "portrait_territoires",
-                table = "source_eco_ptz", 
-                user = "does")
-
-
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
index 71beed1..37a77bb 100644
--- a/data-raw/indicateur_eco_ptz.R
+++ b/data-raw/indicateur_eco_ptz.R
@@ -22,25 +22,25 @@ rm(list=ls())
 load("eco_ptz_cogifiee.RData")
 
 data_cogifiee<-pivot_longer(cogifiee_eco_ptz,
-                            cols = collectif : total,
+                            cols = eptz.ctta1 : nb_eptz.total,
                             names_to = "variable",
                             values_to = "valeur") %>%
   mutate_if(is.character,as.factor)
 
 #table des montants
 data_montants <- data_cogifiee %>% 
-  filter( grepl("^CT", variable)) %>% 
+  filter( grepl("^eptz.ct", variable)) %>% 
   group_by(TypeZone,Zone,CodeZone,date) %>% 
   mutate(valeur = round(valeur/sum(valeur)*100,2),
-         variable = paste("part_montant_",variable)) %>% 
+         variable = paste0("part_montant_",variable)) %>% 
   ungroup()
 
 # table des nombres
 data_nombre <- data_cogifiee %>% 
-  filter( grepl("^nb", variable)) %>% 
+  filter( grepl("^nb_eptz.ct", variable)) %>% 
   group_by(TypeZone,Zone,CodeZone,date) %>% 
   mutate(valeur = round(valeur/sum(valeur)*100,2),
-         variable = paste("part_",variable)) %>%
+         variable = paste0("part_",variable)) %>%
   ungroup()
 
 # regroupement des tables
-- 
GitLab


From 51f16704653d318feb94dc899270da33c9805b8e Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Mon, 3 Mar 2025 11:33:52 +0100
Subject: [PATCH 08/16] ajout des chargements sgbd

---
 data-raw/chargement_eco_ptz.R   |  88 ++++------------------------
 data-raw/cogification_eco_ptz.R |  83 +++++++++-----------------
 data-raw/indicateur_eco_ptz.R   | 100 +++++---------------------------
 3 files changed, 53 insertions(+), 218 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 70d8506..251780c 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -1,11 +1,10 @@
-# chargement_eco_ptz
+# chargement_eco_ptz (a exécuter sur le serveur rstudio du SDES)
 
 # librairies --------------
 library(tidyverse)
 library(lubridate)
 library(COGiter)
 library(sf)
-# library(tricky)
 library(DBI)
 library(RPostgreSQL)
 library(datalibaba)
@@ -235,79 +234,16 @@ eco_ptz <- cogifier(eco_ptz, epci = F, departements = F,regions = F, metro = F)
   mutate(depcom = forcats::fct_drop(.data$depcom)) %>%   #enlève les facteurs inutiles
   pivot_wider(names_from = variable,values_from = valeur)
 
-save(eco_ptz,file="eco_ptz_chargement.RData")
-
-
-# # versement dans le sgbd/datamart.portrait_territoires -------------
-# poster_data(data = eco_ptz,
-#             db = "datamart",
-#             schema = "portrait_territoires", 
-#             table = "source_eco_ptz",
-#             post_row_name = FALSE, 
-#             overwrite = TRUE,
-#             droits_schema = TRUE,
-#             pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
-#             user = "does")
-# 
-# # METADONNEES------------------------------------
-# 
-# ## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
-# var <- setdiff(names(eco_ptz), c("depcom", "date"))
-# 
-# ## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
-# nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
-#   basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
-#   gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
-# 
-# ## authentification google sheet grâce au .Renviron
-# gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
-# gs4_deauth()
-# 
-# 
-# 
-# ## chargement du référentiel indicateurs google sheet
-# metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-#                                   sheet = "indicateurs") %>%
-#   # on ne garde que les variables concernées par le présent script de chargement
-#   filter(source == nom_script_sce) %>% 
-#   # on ajoute l'unité dans le libellé de la variable
-#   mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
-#   select(variable, libelle_variable) %>% 
-#   # ajout des libellés pour depcom et date
-#   bind_rows(
-#     tribble(
-#       ~variable, ~libelle_variable,
-#       "depcom", "Code INSEE de la commune",
-#       "date", "Millesime"
-#     )
-#   )
-# 
-# ## Vérification que la documentation des indicateurs est complète
-# all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
-# 
-# ## Envoi des libellés de variable dans le SGBD
-# post_dico_attr(dico = metadata_indicateur, table = "source_eco_ptz", schema = "portrait_territoires",
-#                db = "datamart", user = "does")
-# 
-# ## Récupération des métadonnées de la source
-# nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
-#   str_replace("indicateur_", "") %>%
-#   str_replace("_cogiter|_cog$", "")
-# 
-# metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-#                               sheet = "sources") %>%
-#   filter(source == nom_sce) %>% 
-#   mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
-#   pull(com_table) %>%
-#   # ajout de complement sur la généalogie
-#   paste0(".\n", "Chargement des donn\u00e9es sur Geokit3")
-# 
-# ## commentaires de la table
-# 
-# commenter_table(comment = metadata_source,
-#                 db = "datamart",
-#                 schema = "portrait_territoires",
-#                 table = "source_eco_ptz", 
-#                 user = "does")
+# save(eco_ptz,file="eco_ptz_chargement.RData")
 
+# versement dans le sgbd EcoSQL/datamart.portrait_territoires -------------
 
+source("R/poster_documenter_data.R", encoding = "UTF-8")
+poster_documenter_it(
+  df = eco_ptz,
+  nom_table_sgbd = "source_eco_ptz", 
+  comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
+  secret = TRUE,
+  user = Sys.getenv("user_ecosql_stat"),
+  serveur = Sys.getenv("server_ecosql")
+)
diff --git a/data-raw/cogification_eco_ptz.R b/data-raw/cogification_eco_ptz.R
index 97b0cb7..345127d 100644
--- a/data-raw/cogification_eco_ptz.R
+++ b/data-raw/cogification_eco_ptz.R
@@ -8,69 +8,40 @@ library(RPostgreSQL)
 library(dplyr)
 library(COGiter)
 library(datalibaba)
+library(googlesheets4)
 
 rm(list = ls())
 
-load("eco_ptz_chargement.RData")
-source_eco_ptz <- eco_ptz
+# process sans SGBD
+# load("eco_ptz_chargement.RData")
+# source_eco_ptz <- eco_ptz
 
 # source_eco_ptz <- importer_data(db = "datamart",
 #                              schema = "portrait_territoires",
 #                              table = "source_eco_ptz")
 
-cogifiee_eco_ptz<-cogifier(source_eco_ptz %>% rename(DEPCOM=depcom))%>% 
-  mutate_if(is.factor,as.character)
+# process SGBD
 
-save(cogifiee_eco_ptz,file="eco_ptz_cogifiee.RData")
+# récupération des données sur EcoSQL
+source_eco_ptz <- importer_data(db = "datamart", schema = "portrait_territoires", table = "source_eco_ptz") %>% 
+  rename_with(.cols = any_of("depcom"), .fn = toupper)
+# versement des données préparées sur le serveur du SDES sur SGBD DREAL
+poster_documenter_it(
+  df = source_eco_ptz,
+  nom_table_sgbd = "source_eco_ptz", 
+  comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
+  secret = TRUE
+)
 
-# poster_data(data = cogifiee_eco_ptz,
-#             db = "datamart",
-#             schema = "portrait_territoires", 
-#             table = "cogifiee_eco_ptz",
-#             pk = c("TypeZone", "Zone", "CodeZone", "date"),
-#             post_row_name = FALSE, 
-#             overwrite = TRUE,
-#             droits_schema = TRUE,
-#             user = "does")
-# 
-# # commentaires de la table et des variables -------------
-# 
-# # récupération des commentaires de la table source
-# dico_var <- get_table_comments(
-#   db = "datamart",
-#   schema = "portrait_territoires",
-#   table = "source_eco_ptz",
-#   user = "does")
-# 
-# # commentaire de la table
-# comm_table <- filter(dico_var, is.na(nom_col)) %>% 
-#   pull(commentaire) %>% 
-#   gsub("\nCommentaire.*$", "", .)
-# 
-# commenter_table(
-#   comment = comm_table,
-#   db = "datamart",
-#   schema = "portrait_territoires",
-#   table = "cogifiee_eco_ptz",
-#   user = "does"
-# )
-# 
-# # commentaire des variables
-# comm_champ <- select(dico_var, nom_col, commentaire) %>% 
-#   filter(!is.na(nom_col), nom_col != "depcom") %>% 
-#   bind_rows(
-#     tribble(
-#       ~nom_col, ~commentaire,
-#       "TypeZone", "Type de territoire",
-#       "Zone", " Nom du territoire",
-#       "CodeZone", "Code INSEE du territoire"
-#     )
-#   )
-# 
-# post_dico_attr(
-#   dico = comm_champ,
-#   db = "datamart",
-#   schema = "portrait_territoires",
-#   table = "cogifiee_eco_ptz",
-#   user = "does"
-# )
+# cogification et versement des données cogifiées dans le SGBD
+eco_ptz <- cogifier_it(nom_source = "source_eco_ptz", secret = TRUE)
+
+# cogifiee_eco_ptz<-cogifier(source_eco_ptz %>% rename(DEPCOM=depcom))%>% 
+#   mutate_if(is.factor,as.character)
+# save(cogifiee_eco_ptz,file="eco_ptz_cogifiee.RData")
+
+
+# versement dans le sgbd/datamart.portrait_territoires et metadonnee -------------
+poster_documenter_post_cogifier(source = "eco_ptz",
+                                user = Sys.getenv("user_ecosql_stat"),
+                                serveur = Sys.getenv("server_ecosql"))
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
index 37a77bb..0d4eae0 100644
--- a/data-raw/indicateur_eco_ptz.R
+++ b/data-raw/indicateur_eco_ptz.R
@@ -15,11 +15,12 @@ library(stringr)
 
 rm(list=ls())
 
-# # chargement data -------------
-# cogifiee_eco_ptz <- importer_data(db = "datamart",
-#                                schema = "portrait_territoires",
-#                                table = "cogifiee_eco_ptz")
-load("eco_ptz_cogifiee.RData")
+# chargement data -------------
+cogifiee_eco_ptz <- importer_data(db = "datamart",
+                               schema = "portrait_territoires",
+                               table = "cogifiee_eco_ptz")
+
+# load("eco_ptz_cogifiee.RData")
 
 data_cogifiee<-pivot_longer(cogifiee_eco_ptz,
                             cols = eptz.ctta1 : nb_eptz.total,
@@ -49,85 +50,12 @@ indicateur_eco_ptz$valeur<-na_if(indicateur_eco_ptz$valeur,NaN)
 indicateur_eco_ptz <- indicateur_eco_ptz %>% 
   pivot_wider(names_from = variable,values_from = valeur)
 
-save(indicateur_eco_ptz,file="eco_ptz_indicateurs.RData")  
-
-
-
-# # versement dans le sgbd/datamart.portrait_territoires -------------
-# poster_data(data = indicateur_eco_ptz,
-#             db = "datamart",
-#             schema = "portrait_territoires", 
-#             table = "indicateur_eco_ptz",
-#             pk = c("TypeZone", "Zone", "CodeZone", "date"),
-#             post_row_name = FALSE, 
-#             overwrite = TRUE,
-#             droits_schema = TRUE,
-#             user = "does")
-# 
-# # METADONNEES------------------------------------
-# 
-# ## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
-# var <- setdiff(names(indicateur_eco_ptz), c("TypeZone", "Zone" , "CodeZone" , "date"))
-# 
-# ## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
-# nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
-#   basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
-#   gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
-# 
-# ## authentification google sheet grâce au .Renviron
-# gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
-# gs4_deauth()
-# 
-# 
-# 
-# ## chargement du référentiel indicateurs google sheet
-# metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-#                                   sheet = "indicateurs") %>%
-#   # on ne garde que les variables concernées par le présent script de chargement
-#   filter(source == nom_script_sce) %>% 
-#   # on ajoute l'unité dans le libellé de la variable
-#   mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
-#   select(variable, libelle_variable) %>% 
-#   # ajout des libellés pour depcom et date
-#   bind_rows(
-#     tribble(
-#       ~variable, ~libelle_variable,
-#       "TypeZone", "Type de territoire",
-#       "Zone", " Nom du territoire",
-#       "CodeZone", "Code INSEE du territoire",
-#       "date", "Millesime"
-#     )
-#   )
-# 
-# ## Vérification que la documentation des indicateurs est complète
-# all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
-# 
-# ## Envoi des libellés de variable dans le SGBD
-# post_dico_attr(dico = metadata_indicateur, table = "indicateur_eco_ptz", schema = "portrait_territoires",
-#                db = "datamart", user = "does")
-# 
-# ## Récupération des métadonnées de la source
-# nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
-#   str_replace("indicateur_", "") %>%
-#   str_replace("_cogiter|_cog$", "")
-# 
-# metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-#                               sheet = "sources") %>%
-#   filter(source == nom_sce) %>% 
-#   mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
-#   pull(com_table) %>%
-#   # ajout de complement sur la généalogie
-#   paste0(".\n", "Chargement des donn\u00e9es sur serveur rstudio CGDD")
-# 
-# ## commentaires de la table
-# 
-# commenter_table(comment = metadata_source,
-#                 db = "datamart",
-#                 schema = "portrait_territoires",
-#                 table = "indicateur_eco_ptz", 
-#                 user = "does")
-
-
-
-
+# save(indicateur_eco_ptz,file="eco_ptz_indicateurs.RData")  
 
+# versement dans le sgbd/datamart.portrait_territoires et metadonnées ---------
+source("R/poster_documenter_ind.R", encoding = "UTF-8")
+poster_documenter_ind(
+  df = indicateur_eco_ptz,
+  nom_table_sgbd = "indicateur_eco_ptz",
+  comm_source_en_plus = "Chargement des donn\u00e9es sur serveur rstudio CGDD"
+)
-- 
GitLab


From 7559fc9e602af4286f890409645184f19ca97f87 Mon Sep 17 00:00:00 2001
From: Daniel Kalioudjoglou
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Thu, 6 Mar 2025 09:33:27 +0100
Subject: [PATCH 09/16] chargement dans sgbd

---
 data-raw/chargement_eco_ptz.R   |  2 +-
 data-raw/cogification_eco_ptz.R | 32 +++++++++++++-------------------
 2 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 251780c..8279623 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -244,6 +244,6 @@ poster_documenter_it(
   nom_table_sgbd = "source_eco_ptz", 
   comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
   secret = TRUE,
-  user = Sys.getenv("user_ecosql_stat"),
+  user = "ecosql_stat",
   serveur = Sys.getenv("server_ecosql")
 )
diff --git a/data-raw/cogification_eco_ptz.R b/data-raw/cogification_eco_ptz.R
index 345127d..f0f1419 100644
--- a/data-raw/cogification_eco_ptz.R
+++ b/data-raw/cogification_eco_ptz.R
@@ -11,37 +11,31 @@ library(datalibaba)
 library(googlesheets4)
 
 rm(list = ls())
-
-# process sans SGBD
-# load("eco_ptz_chargement.RData")
-# source_eco_ptz <- eco_ptz
-
-# source_eco_ptz <- importer_data(db = "datamart",
-#                              schema = "portrait_territoires",
-#                              table = "source_eco_ptz")
+source("R/cogifier_it.R")
+source("R/poster_doc_post_cogifier.R")
+source("R/poster_documenter_data.R", encoding = "UTF-8")
 
 # process SGBD
 
 # récupération des données sur EcoSQL
-source_eco_ptz <- importer_data(db = "datamart", schema = "portrait_territoires", table = "source_eco_ptz") %>% 
-  rename_with(.cols = any_of("depcom"), .fn = toupper)
+eco_ptz <- importer_data(db = "datamart",
+                         schema = "portrait_territoires",
+                         table = "source_eco_ptz",
+                         user = "ecosql_stat",
+                         server = Sys.getenv("server_ecosql")) %>% 
+  # rename_with(.cols = any_of("depcom"), .fn = toupper)
+  
 # versement des données préparées sur le serveur du SDES sur SGBD DREAL
 poster_documenter_it(
-  df = source_eco_ptz,
+  df = eco_ptz,
   nom_table_sgbd = "source_eco_ptz", 
   comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
   secret = TRUE
 )
 
 # cogification et versement des données cogifiées dans le SGBD
-eco_ptz <- cogifier_it(nom_source = "source_eco_ptz", secret = TRUE)
-
-# cogifiee_eco_ptz<-cogifier(source_eco_ptz %>% rename(DEPCOM=depcom))%>% 
-#   mutate_if(is.factor,as.character)
-# save(cogifiee_eco_ptz,file="eco_ptz_cogifiee.RData")
+cogifier_it(nom_source = "eco_ptz", secret = TRUE)
 
 
 # versement dans le sgbd/datamart.portrait_territoires et metadonnee -------------
-poster_documenter_post_cogifier(source = "eco_ptz",
-                                user = Sys.getenv("user_ecosql_stat"),
-                                serveur = Sys.getenv("server_ecosql"))
+poster_documenter_post_cogifier(source = "eco_ptz")
-- 
GitLab


From 4ffcdafac515f22fa60db7250c55ed947fee9b8c Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Thu, 6 Mar 2025 15:43:51 +0100
Subject: [PATCH 10/16] modification des fonctions d export

---
 R/poster_doc_post_cogifier.R | 11 +++++++----
 R/poster_documenter_data.R   | 34 +++++++++++++++++-----------------
 R/poster_documenter_ind.R    | 29 +++++++++++++++--------------
 3 files changed, 39 insertions(+), 35 deletions(-)

diff --git a/R/poster_doc_post_cogifier.R b/R/poster_doc_post_cogifier.R
index 8913a8e..5d026d6 100644
--- a/R/poster_doc_post_cogifier.R
+++ b/R/poster_doc_post_cogifier.R
@@ -4,17 +4,18 @@ library(dplyr)
 
 # une fonction pour propager les commentaires de tables et de champs à la table cogifiée
 
-poster_documenter_post_cogifier <- function(source = "combustible_principal_rp") {
+poster_documenter_post_cogifier <- function(source = "combustible_principal_rp", user = "does", serveur = NULL) {
   # creation du nom des tables
   tbl_source <- paste0("source_", source)
   tbl_cogifiee <- paste0("cogifiee_", source)
   
   # récupération des commentaires de la table source
   dico_var <- get_table_comments(
+    server = serveur,
     db = "datamart",
     schema = "portrait_territoires",
     table = tbl_source,
-    user = "does")
+    user = user)
   
   # commentaire de la table
   comm_table <- filter(dico_var, is.na(nom_col)) %>% 
@@ -22,11 +23,12 @@ poster_documenter_post_cogifier <- function(source = "combustible_principal_rp")
     gsub("\nCommentaire.*$", "", .)
   
   commenter_table(
+    server = serveur,
     comment = comm_table,
     db = "datamart",
     schema = "portrait_territoires",
     table = tbl_cogifiee,
-    user = "does"
+    user = user
   )
   
   # commentaire des variables
@@ -43,10 +45,11 @@ poster_documenter_post_cogifier <- function(source = "combustible_principal_rp")
   
   post_dico_attr(
     dico = comm_champ,
+    server = serveur,
     db = "datamart",
     schema = "portrait_territoires",
     table = tbl_cogifiee,
-    user = "does"
+    user = user
   )
   
 }
diff --git a/R/poster_documenter_data.R b/R/poster_documenter_data.R
index c719eca..924d10d 100644
--- a/R/poster_documenter_data.R
+++ b/R/poster_documenter_data.R
@@ -1,7 +1,7 @@
 library(datalibaba)
 library(googlesheets4)
 
-poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_insee", 
+poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_insee", user = "does", serveur = NULL, secret = FALSE,
                                  comm_source_en_plus = "T\u00e9l\u00e9chargement depuis...") {
   
   # Vérif clé primaire : une ligne par commune et par date
@@ -13,15 +13,15 @@ poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_in
   
   
   # CHARGEMENT de la table dans le SGBD
-  datalibaba::poster_data(data = df,
-              db = "datamart",
-              schema = "portrait_territoires", 
-              table = nom_table_sgbd,
-              post_row_name = FALSE, 
-              overwrite = TRUE,
-              droits_schema = TRUE,
-              pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
-              user = "does") 
+  datalibaba::poster_data(data = df, server = serveur,
+                          db = "datamart",
+                          schema = "portrait_territoires", 
+                          table = nom_table_sgbd,
+                          post_row_name = FALSE, 
+                          overwrite = TRUE,
+                          droits_schema = !secret,
+                          pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
+                          user = user) 
   
   
   # RECUPERATION DES METADONNEES
@@ -65,9 +65,9 @@ poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_in
                                         "V\u00e9rifier si df contient bien toutes les variables attendues et adpatez le r\u00e9f\u00e9rentiel des indicateurs au besoin."))
   
   
-  ## Envoi des libellés de variable dans le SGBD
+  ## Envoi des libellés de variable en commentaire de champ dans le SGBD
   datalibaba::post_dico_attr(dico = metadata_indicateur, table = nom_table_sgbd, schema = "portrait_territoires",
-                 db = "datamart", user = "does")
+                             db = "datamart", user = user, server = serveur)
   
   ## Récupération des métadonnées de la source
   nom_sce <- stringr::str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
@@ -84,12 +84,12 @@ poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_in
   
   
   ## commentaires de la table
-  
   datalibaba::commenter_table(comment = metadata_source,
-                  db = "datamart",
-                  schema = "portrait_territoires",
-                  table = nom_table_sgbd, 
-                  user = "does")
+                              db = "datamart",
+                              server = serveur,
+                              schema = "portrait_territoires",
+                              table = nom_table_sgbd, 
+                              user = user)
   
 }
 
diff --git a/R/poster_documenter_ind.R b/R/poster_documenter_ind.R
index cacdb64..e124a62 100644
--- a/R/poster_documenter_ind.R
+++ b/R/poster_documenter_ind.R
@@ -2,7 +2,7 @@ library(datalibaba)
 library(googlesheets4)
 
 poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgbd = "indicateur_bimotor_menages", 
-                                  comm_source_en_plus = "", nom_script_sce = NULL) {
+                                  comm_source_en_plus = "", nom_script_sce = NULL, user = "does", serveur = NULL, secret = FALSE) {
   
   # Vérif clé primaire : une ligne par commune et par date
   doublons <- df %>% 
@@ -14,14 +14,15 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
   
   # CHARGEMENT de la table dans le SGBD
   datalibaba::poster_data(data = df,
-              db = "datamart",
-              schema = "portrait_territoires", 
-              table = nom_table_sgbd,
-              post_row_name = FALSE, 
-              overwrite = TRUE,
-              droits_schema = TRUE,
-              pk = c("TypeZone", "CodeZone", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois la même zone et la meme date
-              user = "does") 
+                          server = serveur,
+                          db = "datamart",
+                          schema = "portrait_territoires", 
+                          table = nom_table_sgbd,
+                          post_row_name = FALSE, 
+                          overwrite = TRUE,
+                          droits_schema = !secret,
+                          pk = c("TypeZone", "CodeZone", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois la même zone et la meme date
+                          user = use) 
   
   
   # RECUPERATION DES METADONNEES
@@ -76,7 +77,7 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
   
   ## Envoi des libellés de variable dans le SGBD
   datalibaba::post_dico_attr(dico = metadata_indicateur, table = nom_table_sgbd, schema = "portrait_territoires",
-                 db = "datamart", user = "does")
+                             db = "datamart", server = serveur, user = user)
   
   ## Récupération des métadonnées de la source
   nom_sce <- stringr::str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
@@ -96,10 +97,10 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
   ## commentaires de la table
   
   datalibaba::commenter_table(comment = metadata_source,
-                  db = "datamart",
-                  schema = "portrait_territoires",
-                  table = nom_table_sgbd, 
-                  user = "does")
+                              db = "datamart",
+                              schema = "portrait_territoires",
+                              table = nom_table_sgbd, 
+                              user = user, server = serveur)
   
 }
 
-- 
GitLab


From 12510229a543c710b74d313e8d553b0772affd03 Mon Sep 17 00:00:00 2001
From: Daniel Kalioudjoglou
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Thu, 6 Mar 2025 16:10:11 +0100
Subject: [PATCH 11/16] dernieres modifs

---
 R/cogifier_it.R                 | 6 +++---
 data-raw/cogification_eco_ptz.R | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/R/cogifier_it.R b/R/cogifier_it.R
index 039df16..c9f73b8 100644
--- a/R/cogifier_it.R
+++ b/R/cogifier_it.R
@@ -2,7 +2,7 @@ library(dplyr)
 library(COGiter)
 library(datalibaba)
 
-cogifier_it <- function(nom_source = "besoins_chaleur_cerema", ...){
+cogifier_it <- function(nom_source = "besoins_chaleur_cerema", user = "does", serveur = NULL, secret = FALSE, ...){
   
   df_source <- importer_data(db = "datamart", schema = "portrait_territoires",
                                   table = paste0("source_", nom_source)) %>% 
@@ -18,8 +18,8 @@ cogifier_it <- function(nom_source = "besoins_chaleur_cerema", ...){
               pk = c("TypeZone", "Zone", "CodeZone", "date"),
               post_row_name = FALSE, 
               overwrite = TRUE,
-              droits_schema = TRUE,
-              user = "does") 
+              droits_schema = !secret,
+              user = user) 
   
   return(df_cogifie)
 }
diff --git a/data-raw/cogification_eco_ptz.R b/data-raw/cogification_eco_ptz.R
index f0f1419..4cd0c22 100644
--- a/data-raw/cogification_eco_ptz.R
+++ b/data-raw/cogification_eco_ptz.R
@@ -22,7 +22,7 @@ eco_ptz <- importer_data(db = "datamart",
                          schema = "portrait_territoires",
                          table = "source_eco_ptz",
                          user = "ecosql_stat",
-                         server = Sys.getenv("server_ecosql")) %>% 
+                         server = Sys.getenv("server_ecosql"))
   # rename_with(.cols = any_of("depcom"), .fn = toupper)
   
 # versement des données préparées sur le serveur du SDES sur SGBD DREAL
-- 
GitLab


From f1a8d0af79596df4ba10e8d8dd8ed94f0824ddf7 Mon Sep 17 00:00:00 2001
From: Daniel Kalioudjoglou
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Tue, 25 Mar 2025 11:35:04 +0100
Subject: [PATCH 12/16] modification methode de chargement

---
 data-raw/chargement_eco_ptz.R   | 33 +++++++++++++++++++++++++++++++++
 data-raw/cogification_eco_ptz.R | 22 ----------------------
 data-raw/indicateur_eco_ptz.R   |  1 +
 3 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 8279623..9d7f49b 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -247,3 +247,36 @@ poster_documenter_it(
   user = "ecosql_stat",
   serveur = Sys.getenv("server_ecosql")
 )
+
+
+#------------------------------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------------------------------
+# 2e partie, à éxécuter sur le PC de bureau (hors serveur SDES)
+#------------------------------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------------------------------
+
+# librairies ------
+library(DBI)
+library(RPostgreSQL)
+library(dplyr)
+library(COGiter)
+library(datalibaba)
+library(googlesheets4)
+
+rm(list = ls())
+source("R/poster_documenter_data.R", encoding = "UTF-8")
+
+# récupération des données sur EcoSQL
+eco_ptz <- importer_data(db = "datamart",
+                         schema = "portrait_territoires",
+                         table = "source_eco_ptz",
+                         user = "ecosql_stat",
+                         server = Sys.getenv("server_ecosql"))
+
+# versement des données sur SGBD DREAL
+poster_documenter_it(
+  df = eco_ptz,
+  nom_table_sgbd = "source_eco_ptz", 
+  comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
+  secret = TRUE
+)
diff --git a/data-raw/cogification_eco_ptz.R b/data-raw/cogification_eco_ptz.R
index 4cd0c22..08b48d2 100644
--- a/data-raw/cogification_eco_ptz.R
+++ b/data-raw/cogification_eco_ptz.R
@@ -1,7 +1,5 @@
-
 # cogification_eco_ptz
 
-
 # librairies ------
 library(DBI)
 library(RPostgreSQL)
@@ -13,29 +11,9 @@ library(googlesheets4)
 rm(list = ls())
 source("R/cogifier_it.R")
 source("R/poster_doc_post_cogifier.R")
-source("R/poster_documenter_data.R", encoding = "UTF-8")
-
-# process SGBD
-
-# récupération des données sur EcoSQL
-eco_ptz <- importer_data(db = "datamart",
-                         schema = "portrait_territoires",
-                         table = "source_eco_ptz",
-                         user = "ecosql_stat",
-                         server = Sys.getenv("server_ecosql"))
-  # rename_with(.cols = any_of("depcom"), .fn = toupper)
-  
-# versement des données préparées sur le serveur du SDES sur SGBD DREAL
-poster_documenter_it(
-  df = eco_ptz,
-  nom_table_sgbd = "source_eco_ptz", 
-  comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
-  secret = TRUE
-)
 
 # cogification et versement des données cogifiées dans le SGBD
 cogifier_it(nom_source = "eco_ptz", secret = TRUE)
 
-
 # versement dans le sgbd/datamart.portrait_territoires et metadonnee -------------
 poster_documenter_post_cogifier(source = "eco_ptz")
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
index 0d4eae0..6c5d665 100644
--- a/data-raw/indicateur_eco_ptz.R
+++ b/data-raw/indicateur_eco_ptz.R
@@ -59,3 +59,4 @@ poster_documenter_ind(
   nom_table_sgbd = "indicateur_eco_ptz",
   comm_source_en_plus = "Chargement des donn\u00e9es sur serveur rstudio CGDD"
 )
+
-- 
GitLab


From 9f5e7e766b0a2a5e8208020f5bfd527f462bde7d Mon Sep 17 00:00:00 2001
From: Daniel Kalioudjoglou
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Tue, 25 Mar 2025 12:36:07 +0100
Subject: [PATCH 13/16] correction erreur dans fonction

manque un r a user
---
 R/poster_documenter_ind.R     | 2 +-
 data-raw/indicateur_eco_ptz.R | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/R/poster_documenter_ind.R b/R/poster_documenter_ind.R
index e124a62..25d80b0 100644
--- a/R/poster_documenter_ind.R
+++ b/R/poster_documenter_ind.R
@@ -22,7 +22,7 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
                           overwrite = TRUE,
                           droits_schema = !secret,
                           pk = c("TypeZone", "CodeZone", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois la même zone et la meme date
-                          user = use) 
+                          user = user) 
   
   
   # RECUPERATION DES METADONNEES
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
index 6c5d665..63cd2a8 100644
--- a/data-raw/indicateur_eco_ptz.R
+++ b/data-raw/indicateur_eco_ptz.R
@@ -50,8 +50,6 @@ indicateur_eco_ptz$valeur<-na_if(indicateur_eco_ptz$valeur,NaN)
 indicateur_eco_ptz <- indicateur_eco_ptz %>% 
   pivot_wider(names_from = variable,values_from = valeur)
 
-# save(indicateur_eco_ptz,file="eco_ptz_indicateurs.RData")  
-
 # versement dans le sgbd/datamart.portrait_territoires et metadonnées ---------
 source("R/poster_documenter_ind.R", encoding = "UTF-8")
 poster_documenter_ind(
-- 
GitLab


From 557b4bf7bc00ea833f9eb07de09c329f60a37c46 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Fri, 28 Mar 2025 17:45:42 +0100
Subject: [PATCH 14/16] tests sur apariement communes

---
 data-raw/chargement_eco_ptz.R | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 9d7f49b..732d117 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -127,7 +127,7 @@ base_intermediaire2 <- base_intermediaire %>%
 #   response <- GET(url, query = list(codePostal = codepostal))
 #   # response <- GET(url, query = list(codePostal = "35800"))
 #   c_insee <- fromJSON(content(response, "text"))
-#  
+# 
 #   if (length(c_insee) == 0) {
 #     return(NA)
 #     # return(data[[1]]$code)
@@ -141,8 +141,12 @@ base_intermediaire2 <- base_intermediaire %>%
 #     return(c_insee2)
 #   }
 # }
+# # 
+# base_intermediaire2b <- base_intermediaire2 %>% filter(is.na(CINS))
+# vecteur <- base_intermediaire2b %>%  select(CPLA) %>% pull()
+# vecteur2 <- unlist(sapply(vecteur, retrouve_cinsee))
 # 
-# aaa <- retrouve_cinsee("35800")   # ça ça fonctionne, mais pas pour la colonne
+# aaa <- retrouve_cinsee("44680")   # ça ça fonctionne, mais pas pour la colonne
 # 
 # 
 # base_intermediaire20 <- base_intermediaire %>%
-- 
GitLab


From a87402f1eed0941a0854e033c80dd7d63292d964 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Mon, 7 Apr 2025 16:11:43 +0200
Subject: [PATCH 15/16] Resolution de la fonction de recherche

---
 data-raw/chargement_eco_ptz.R | 83 +++++++++++++++++++++++++----------
 1 file changed, 60 insertions(+), 23 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 732d117..85adcd3 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -10,6 +10,7 @@ library(RPostgreSQL)
 library(datalibaba)
 library(googlesheets4)
 library(stringr)
+library(stringdist)
 
 rm(list = ls())
 
@@ -119,31 +120,67 @@ base_intermediaire2 <- base_intermediaire %>%
 #---------------------------------------------------------------------------------------------  
 
 # #test reconnaissance : marche pas
-# retrouve_cinsee <- function(codepostal){
-#   library(dplyr)
-#   library(httr)
-#   library(jsonlite)
-#   url <- "https://geo.api.gouv.fr/communes"
-#   response <- GET(url, query = list(codePostal = codepostal))
-#   # response <- GET(url, query = list(codePostal = "35800"))
-#   c_insee <- fromJSON(content(response, "text"))
 # 
-#   if (length(c_insee) == 0) {
-#     return(NA)
-#     # return(data[[1]]$code)
-#   } else {
-#     c_insee2 <- c_insee %>%
-#       as.data.frame() %>%
-#       select(-codesPostaux) %>%
-#       # mutate(population) = as.numeric(population) %>%
-#       filter(population == max(population)) %>%
-#       select(nom) %>% pull()
-#     return(c_insee2)
-#   }
-# }
-# # 
+# 
+#
+
+
+
+
+
+
+
+# FONCTION QUI CHOISIT DANS UNE LISTE LE CODE INSEE DONT LE NOM DE LA COMMUNE EST LE PLUS PROCHE
+retrouve_cinsee <- function(codepostal, ville){
+  library(dplyr)
+  library(httr)
+  library(jsonlite)
+  #récupère la table des communes avec ce code postal
+  url <- "https://geo.api.gouv.fr/communes"
+  response <- GET(url, query = list(codePostal = codepostal))
+  # response <- GET(url, query = list(codePostal = "35800"))
+  c_insee <- fromJSON(content(response, "text"))
+
+  if (length(c_insee) == 0) {  # si pas de code insee ou code inexistant
+    return(NA)
+    # return(data[[1]]$code)
+  } else {
+    c_insee2 <- c_insee %>%
+      as.data.frame() %>%
+      select(nom, code) %>%  #ne garde que les colonnes nécessaires
+      mutate(nom = toupper(nom), #met tout en majuscules
+             nom = str_replace (nom,"SAINTES","STES"),
+             nom = str_replace (nom,"SAINTE","STE"),
+             nom = str_replace (nom,"SAINTS","STS"),
+             nom = str_replace (nom,"SAINT","ST"),
+             nom = str_replace_all (nom,"[-']"," "))#remplace les tirets et apostrophes par des espaces
+    
+    list_com <- c_insee2 %>% pull(nom) # liste des communes avec ce code postal
+    list_code <- c_insee2 %>% pull(code) # liste des codes insee
+    
+    #liste des communes avec le code postal
+    liste_communes <- c(list_com,list_code)
+    
+    # recherche commune avec texte le plus proche 
+    library(stringdist) 
+    distances <- stringdist(ville,list_com,method ="jw")
+    indice_min <- which.min(distances)
+    texte_proche <- list_com[indice_min]
+    
+    numero_dans_liste <- which(list_com == texte_proche)
+    code_insee_proche <- list_code[numero_dans_liste]
+    
+    # return(texte_proche)
+    return(code_insee_proche)
+  }
+}
+# 
+# df <- base_intermediaire3 %>% 
+#   mutate(comm100 = mapply(retrouve_cinsee(CPLA,VILL)))
+# #
 # base_intermediaire2b <- base_intermediaire2 %>% filter(is.na(CINS))
 # vecteur <- base_intermediaire2b %>%  select(CPLA) %>% pull()
+# vecteur2 <- sapply(vecteur, retrouve_cinsee)
 # vecteur2 <- unlist(sapply(vecteur, retrouve_cinsee))
 # 
 # aaa <- retrouve_cinsee("44680")   # ça ça fonctionne, mais pas pour la colonne
@@ -155,7 +192,7 @@ base_intermediaire2 <- base_intermediaire %>%
 # base_intermediaire30 <- base_intermediaire20 %>%
 #  mutate(cinsee20 = retrouve_cinsee("35800"))
 # base_intermediaire20$code_insee <- mapply(retrouve_cinsee, base_intermediaire20$CPLA)
-# base_intermediaire20 <- base_intermediaire20 %>% 
+# base_intermediaire20 <- base_intermediaire20 %>%
 #   mutate(code_insee = retrouve_cinsee(CPLA))
 
 #---------------------------------------------------------------------------------------------  
-- 
GitLab


From 0ffe4a6c2bbb1ee45201e7b1273a539642b60a11 Mon Sep 17 00:00:00 2001
From: "daniel.kalioudjoglou"
 <daniel.kalioudjoglou@developpement-durable.gouv.fr>
Date: Tue, 8 Apr 2025 20:34:48 +0200
Subject: [PATCH 16/16] finalisation fonction recherche code insee dans eco ptz

---
 data-raw/chargement_eco_ptz.R | 180 +++++++++++++++++-----------------
 1 file changed, 91 insertions(+), 89 deletions(-)

diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index 85adcd3..33a0066 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -59,78 +59,30 @@ BASE_ECO_PTZ_DHUP<- read_delim(paste0("/nfs/data/partage-PTZ-EPTZ/PTZ-EPTZ/BASE_
                           delim = ";", escape_double = FALSE, locale = locale(decimal_mark = ","), trim_ws = TRUE)
 
 
-# suppression des années anciennes
+
 base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
   mutate(DATP = str_sub(DATP,1,4)) %>% 
-  filter (DATP >= annee_conservee) %>%
+  filter (DATP >= annee_conservee) %>%  # suppression des années anciennes
   select(DATP,CINS,CPLA,VILL,NALO,TTRV,CSEN,CTA1,CTA2,CTA3,CTA4,CTA5,CTA6,CTTA1,CTTA2,CTTA3,CTTA4,CTTA5,CTTA6,CTTA7) %>%  
 # application des filtres
-# CSEN est"V" (valide)
-# si type de travaux (TTRV) = 4 (réhabilitation de système d’assainissement non collectif),
-# la nature du logement (NALO) doit être égale à 1 (maison individuelle)
-  filter(CSEN == "V") %>%
-  mutate(NALO = case_when(
-    TTRV == "4" ~ 1,
-    TRUE~ NALO)) %>% 
-  select(-CSEN,-TTRV)
-
-
-#complétage du code insee--------------------------------------------------------
-communes2 <- communes %>%                 #table des communes
-  select(DEPCOM,NOM_DEPCOM,DEP) %>% 
-  mutate(NOM_DEPCOM = toupper(NOM_DEPCOM),  #met tout en majuscules
-         NOM_DEPCOM = iconv(NOM_DEPCOM, from = "UTF-8", to = "ASCII//TRANSLIT"),   #enlève les accents
-         NOM_DEPCOM = str_replace_all (NOM_DEPCOM,"[-']"," "), #remplace les tirets et apostrophes par des espaces
-         lien = paste(DEP,NOM_DEPCOM)) %>% 
-  select(lien, DEPCOM) 
-communes2a <- communes2 %>%   #creation d'une table dans laquelle on remplace "saint" par "st"
-  mutate(lien = str_replace (lien,"SAINTES","STES"),
-         lien = str_replace (lien,"SAINTE","STE"),
-         lien = str_replace (lien,"SAINTS","STS"),
-         lien = str_replace (lien,"SAINT","ST")
-  )
-communes2b <- communes2 %>%   #creation d'une table dans laquelle on remplace "saint" par "st"
-  mutate(lien = str_replace (lien,"LE ",""),
-         lien = str_replace (lien,"LES ",""),
-         lien = ifelse(str_detect(lien,"LA LONGEVILLE"), lien, str_replace (lien,"LA ","")),
-         lien = str_replace (lien,"L ","")  
-  )
-communes2 <- rbind(communes2,communes2a,communes2b) %>% 
-  unique()
-        
-base_intermediaire2 <- base_intermediaire %>%
+  filter(CSEN == "V") %>%  # CSEN est"V" (valide)
+  mutate(NALO = case_when(  
+    TTRV == "4" ~ 1,   # si type de travaux (TTRV) = 4 (réhabilitation de système d’assainissement non collectif)
+    TRUE~ NALO)) %>%   # la nature du logement (NALO) doit être égale à 1 (maison individuelle)
+  select(-CSEN,-TTRV) %>%
+# mise au format des noms de communes  
   mutate(VILL = iconv(VILL, from = "UTF-8", to = "ASCII//TRANSLIT"),
-         VILL = toupper(VILL)) %>%   #met tout en majuscules
-  mutate(lien = paste(ifelse(str_detect(CPLA,"^97"),str_sub(CPLA,1,3),str_sub(CPLA,1,2)),VILL)) %>% # SI DOM TOM (97) , prend les 3 premiers chiffres
-  mutate(lien = str_replace (lien,"SAINTES","STES"),
-         lien = str_replace (lien,"SAINTE","STE"),
-         lien = str_replace (lien,"SAINTS","STS"),
-         lien = str_replace (lien,"SAINT","ST"),
-         lien = str_replace_all (lien,"[-']"," "), #remplace les tirets et apostrophes par des espaces
-  ) %>% 
-  left_join(communes2, by = "lien") %>%
-  mutate(CINS = case_when(
-    is.na(CINS)~ DEPCOM,
-    TRUE~ CINS))
-#fin complétage du code insee--------------------------------------------------------
-# après complétage, 1554 codes insee ne sont pas complétés
-# à compléter pour tout remplir CINS
-    
+         VILL = toupper(VILL),  #met tout en majuscules
+         VILL = str_replace (VILL,"SAINTES","STES"),
+         VILL = str_replace (VILL,"SAINTE","STE"),
+         VILL = str_replace (VILL,"SAINTS","STS"),
+         VILL = str_replace (VILL,"SAINT","ST"),
+         VILL = str_replace_all (VILL,"[-']"," ") #remplace les tirets et apostrophes par des espaces
+         )  
+  # mutate(lien = paste(ifelse(str_detect(CPLA,"^97"),str_sub(CPLA,1,3),str_sub(CPLA,1,2)),VILL)) # SI DOM TOM (97) , prend les 3 premiers chiffres
 
 #---------------------------------------------------------------------------------------------  
-
-# #test reconnaissance : marche pas
-# 
-# 
-#
-
-
-
-
-
-
-
-# FONCTION QUI CHOISIT DANS UNE LISTE LE CODE INSEE DONT LE NOM DE LA COMMUNE EST LE PLUS PROCHE
+# Fonction qui à partir du code postal et du nom de commune, même approximatif, renvoie le code Insee de la commune
 retrouve_cinsee <- function(codepostal, ville){
   library(dplyr)
   library(httr)
@@ -158,9 +110,6 @@ retrouve_cinsee <- function(codepostal, ville){
     list_com <- c_insee2 %>% pull(nom) # liste des communes avec ce code postal
     list_code <- c_insee2 %>% pull(code) # liste des codes insee
     
-    #liste des communes avec le code postal
-    liste_communes <- c(list_com,list_code)
-    
     # recherche commune avec texte le plus proche 
     library(stringdist) 
     distances <- stringdist(ville,list_com,method ="jw")
@@ -174,32 +123,85 @@ retrouve_cinsee <- function(codepostal, ville){
     return(code_insee_proche)
   }
 }
-# 
-# df <- base_intermediaire3 %>% 
-#   mutate(comm100 = mapply(retrouve_cinsee(CPLA,VILL)))
-# #
-# base_intermediaire2b <- base_intermediaire2 %>% filter(is.na(CINS))
-# vecteur <- base_intermediaire2b %>%  select(CPLA) %>% pull()
-# vecteur2 <- sapply(vecteur, retrouve_cinsee)
-# vecteur2 <- unlist(sapply(vecteur, retrouve_cinsee))
-# 
-# aaa <- retrouve_cinsee("44680")   # ça ça fonctionne, mais pas pour la colonne
-# 
-# 
-# base_intermediaire20 <- base_intermediaire %>%
-#   mutate(VILL = iconv(VILL, from = "UTF-8", to = "ASCII//TRANSLIT"),
-#          VILL = toupper(VILL))
-# base_intermediaire30 <- base_intermediaire20 %>%
-#  mutate(cinsee20 = retrouve_cinsee("35800"))
-# base_intermediaire20$code_insee <- mapply(retrouve_cinsee, base_intermediaire20$CPLA)
-# base_intermediaire20 <- base_intermediaire20 %>%
-#   mutate(code_insee = retrouve_cinsee(CPLA))
+#-Remplissage de la colonne CINS (code insee)-------------------------------------------------------------------------------------------  
+
+#  séparation table remplie et table sans les codes insee
+base_inter_manquantes <- base_intermediaire %>% filter(is.na(CINS)) %>% 
+  select(-CINS)
+base_inter_complete <- base_intermediaire %>% filter(!is.na(CINS))
+
+# recherche des codes insee (on applique la fonction)
+base_inter_manquantes$CINS <- mapply(retrouve_cinsee, 
+                                           base_inter_manquantes$CPLA, 
+                                           base_inter_manquantes$VILL)
+# ATTENTION: OPERATION TRES LONGUE (30 minutes)
+
+# transformation de la colonne du format list en format texte
+base_inter_manquantes2 <- base_inter_manquantes
+base_inter_manquantes2$CINS <- lapply(base_inter_manquantes2$CINS, function(x) if (is.null(x)|| length(x) == 0) NA else x) # remplace les NULL ou character(0) par NA
+base_inter_manquantes2$CINS <- unlist(base_inter_manquantes2$CINS, use.names = FALSE)
+
+# regroupement des tables
+base_intermediaire2 <- bind_rows(base_inter_complete,base_inter_manquantes2)
+
+# nombre de lignes avec CINS = NA
+nb_na <- base_intermediaire2 %>% filter(is.na(CINS)) %>% nrow() %>% as.numeric()
+print(paste("il reste",nb_na,"lignes avec code insee non rempli"))
+
+#-----------remplir les lignes manquantes quand on n'a que le code postal (on met la commune principale)-------------
+#  ne s'effectue que s'il reste des lignes à NA
+if(nb_na == 0){
+}else{
+  base_intermediaire2a <- base_intermediaire2 %>% filter(is.na(CINS))
+  base_intermediaire2b <- base_intermediaire2 %>% filter(!is.na(CINS))
+  
+  retrouve_cinsee_pop_max <- function(codepostal){
+    library(dplyr)
+    library(httr)
+    library(jsonlite)
+    #récupère la table des communes avec ce code postal
+    url <- "https://geo.api.gouv.fr/communes"
+    response <- GET(url, query = list(codePostal = codepostal))
+    c_insee <- fromJSON(content(response, "text"))
+    
+    if (length(c_insee) == 0) {  # si pas de code insee ou code inexistant
+      return(NA)
+      # return(data[[1]]$code)
+    } else {
+      c_insee2 <- c_insee %>%
+        as.data.frame() %>%
+        filter(population == max(population)) %>%  # filtre sur la commune à la population la plus élevée
+        pull(code)  
+      
+      return(c_insee2) #renvoie le code insee de la commune la plus peuplée
+    }
+  }
+  
+  # recherche des codes insee (on applique la fonction)
+  base_intermediaire2a$CINS <- mapply(retrouve_cinsee_pop_max,base_intermediaire2a$CPLA)
+  
+  # transformation de la colonne du format list en format texte
+  base_intermediaire2a$CINS <- lapply(base_intermediaire2a$CINS, function(x) if (is.null(x)|| length(x) == 0) NA else x) # remplace les NULL ou character(0) par NA
+  base_intermediaire2a$CINS <- unlist(base_intermediaire2a$CINS, use.names = FALSE)
+  
+  # regroupement des tables
+  base_intermediaire2 <- bind_rows(base_intermediaire2a,base_intermediaire2b)  
+}
+
+# Vérification des lignes restantes sans code insee
+nb_na <- base_intermediaire2 %>% filter(is.na(CINS)) %>% nrow() %>% as.numeric() # nombre de lignes avec CINS = NA
+print(paste("il reste",nb_na,"lignes avec code insee non rempli")) 
+if(nb_na != 0){
+  stop("il reste des codes insee non remplis, si vous continuez, les lignes correspondantes seront supprimées")
+}
+base_intermediaire2 <- base_intermediaire2 %>% filter(!is.na(CINS)) # suppression des lignes avec CINS= NA
+
 
 #---------------------------------------------------------------------------------------------  
  
 base_intermediaire3 <- base_intermediaire2 %>% 
   filter(!is.na(CINS)) %>%  # filtre pour ne garder que les lignes avec code commune
-  select(-CPLA,-VILL,-lien,-DEPCOM) %>% 
+  select(-CPLA,-VILL) %>% 
   rename(date = "DATP",DEPCOM = "CINS", type_logt = "NALO") %>%
   mutate(type_logt = case_when(
     type_logt == 1 ~ "nb_eptz.maison_individuelle",
-- 
GitLab