diff --git a/R/poster_documenter_data.R b/R/poster_documenter_data.R index 924d10d823fee213373f8d5b112ae4b71d83949d..f6cfe163ca01c1f17d3f56613d0004b1cad3fb98 100644 --- a/R/poster_documenter_data.R +++ b/R/poster_documenter_data.R @@ -1,97 +1,97 @@ -library(datalibaba) -library(googlesheets4) - -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 - doublons <- df %>% - dplyr::count(depcom, date) %>% - dplyr::filter(n>1) %>% - nrow() - attempt::stop_if(doublons > 0, msg = glue::glue("La table df contient plusieurs lignes qui ont \u00e0 la fois le m\u00eame code commune et la m\u00eame date m\u00eame date")) - - - # CHARGEMENT de la table dans le SGBD - 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 - - ## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté - var <- dplyr::setdiff(names(df), 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' - message("nom_script_sce détecté ", nom_script_sce) - ## authentification google sheet grâce au .Renviron - googlesheets4::gs4_auth_configure(api_key = Sys.getenv("google_api_key")) - googlesheets4::gs4_deauth() - - ## chargement du référentiel indicateurs google sheet - metadata_indicateur <- googlesheets4::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 - dplyr::filter(source == nom_script_sce) %>% - # on ajoute l'unité dans le libellé de la variable - dplyr::mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% - dplyr::select(variable, libelle_variable) %>% - # ajout des libellés pour depcom et date - dplyr::bind_rows( - tidyr::tribble( - ~variable, ~libelle_variable, - "depcom", "Code INSEE de la commune", - "date", "Millesime" - ) - ) - - ## Vérification que la documentation des indicateurs est complète - var_mq <- dplyr::setdiff(var, metadata_indicateur$variable) %>% paste(collapse = "\n") - var_en_trop <- dplyr::setdiff(metadata_indicateur$variable, c("depcom", "date", var)) %>% paste(collapse = "\n") - attempt::stop_if_not(all(var %in% metadata_indicateur$variable), - msg = glue::glue("La table df contient des variables non document\u00e9es dans le r\u00e9f\u00e9rentiel google sheet : \n{var_mq}\n")) - attempt::stop_if_not(all(metadata_indicateur$variable %in% c("depcom", "date", var)), - msg = glue::glue("Le r\u00e9f\u00e9rentiel google sheet des indicateurs contient des variables absentes de la table df :\n{var_en_trop}\n", - "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 en commentaire de champ dans le SGBD - datalibaba::post_dico_attr(dico = metadata_indicateur, table = nom_table_sgbd, schema = "portrait_territoires", - 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_", "") %>% - stringr::str_replace("indicateur_", "") %>% - stringr::str_replace("_cogiter|_cog$", "") - - metadata_source <- googlesheets4::read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277", - sheet = "sources") %>% - dplyr::filter(source == nom_sce) %>% - dplyr::mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% - dplyr::pull(com_table) %>% - # ajout de complement sur la généalogie - paste0("\n", comm_source_en_plus) - - - ## commentaires de la table - datalibaba::commenter_table(comment = metadata_source, - db = "datamart", - server = serveur, - schema = "portrait_territoires", - table = nom_table_sgbd, - user = user) - -} - - - +library(datalibaba) +library(googlesheets4) + +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 + doublons <- df %>% + dplyr::count(depcom, date) %>% + dplyr::filter(n>1) %>% + nrow() + attempt::stop_if(doublons > 0, msg = glue::glue("La table df contient plusieurs lignes qui ont \u00e0 la fois le m\u00eame code commune et la m\u00eame date m\u00eame date")) + + + # CHARGEMENT de la table dans le SGBD + 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 + + ## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté + var <- dplyr::setdiff(names(df), 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' + message("nom_script_sce détecté ", nom_script_sce) + ## authentification google sheet grâce au .Renviron + googlesheets4::gs4_auth_configure(api_key = Sys.getenv("google_api_key")) + googlesheets4::gs4_deauth() + + ## chargement du référentiel indicateurs google sheet + metadata_indicateur <- googlesheets4::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 + dplyr::filter(source == nom_script_sce) %>% + # on ajoute l'unité dans le libellé de la variable + dplyr::mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% + dplyr::select(variable, libelle_variable) %>% + # ajout des libellés pour depcom et date + dplyr::bind_rows( + tidyr::tribble( + ~variable, ~libelle_variable, + "depcom", "Code INSEE de la commune", + "date", "Millesime" + ) + ) + + ## Vérification que la documentation des indicateurs est complète + var_mq <- dplyr::setdiff(var, metadata_indicateur$variable) %>% paste(collapse = "\n") + var_en_trop <- dplyr::setdiff(metadata_indicateur$variable, c("depcom", "date", var)) %>% paste(collapse = "\n") + attempt::stop_if_not(all(var %in% metadata_indicateur$variable), + msg = glue::glue("La table df contient des variables non document\u00e9es dans le r\u00e9f\u00e9rentiel google sheet : \n{var_mq}\n")) + attempt::stop_if_not(all(metadata_indicateur$variable %in% c("depcom", "date", var)), + msg = glue::glue("Le r\u00e9f\u00e9rentiel google sheet des indicateurs contient des variables absentes de la table df :\n{var_en_trop}\n", + "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 en commentaire de champ dans le SGBD + datalibaba::post_dico_attr(dico = metadata_indicateur, table = nom_table_sgbd, schema = "portrait_territoires", + 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_", "") %>% + stringr::str_replace("indicateur_", "") %>% + stringr::str_replace("_cogiter|_cog$", "") + + metadata_source <- googlesheets4::read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277", + sheet = "sources") %>% + dplyr::filter(source == nom_sce) %>% + dplyr::mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% + dplyr::pull(com_table) %>% + # ajout de complement sur la généalogie + paste0("\n", comm_source_en_plus) + + + ## commentaires de la table + datalibaba::commenter_table(comment = metadata_source, + 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 25d80b0cd9b37b77d69b2fb0ddfee687112a4a2a..408ad74c66233636d56b94f33348b49edcb8a60c 100644 --- a/R/poster_documenter_ind.R +++ b/R/poster_documenter_ind.R @@ -34,7 +34,7 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb if(is.null(nom_script_sce)) { nom_script_sce <- rstudioapi::getSourceEditorContext()$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' + gsub(pattern = ".R$", "", .) # on enlève l'extension '.R' if(nom_script_sce == "cogifier_en_masse") { nom_script_sce <- nom_table_sgbd } @@ -46,7 +46,7 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb ## chargement du référentiel indicateurs google sheet metadata_indicateur0 <- googlesheets4::read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277", - sheet = "indicateurs") + sheet = "indicateurs") metadata_indicateur <- metadata_indicateur0 %>% # on ne garde que les variables concernées par le présent script de chargement dplyr::filter(source == nom_script_sce) %>% @@ -85,7 +85,7 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb stringr::str_replace("_cogiter|_cog$", "") metadata_source0 <- googlesheets4::read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277", - sheet = "sources") + sheet = "sources") metadata_source <- metadata_source0 %>% dplyr::filter(source == nom_sce) %>% dplyr::mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% @@ -106,3 +106,4 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb + diff --git a/data-raw/chargement_ecln.R b/data-raw/chargement_ecln.R index c114db69fe1562f574880623d1347b66da84fc32..55f3237af4d72077fc24720f5a7081ad6bba69dd 100644 --- a/data-raw/chargement_ecln.R +++ b/data-raw/chargement_ecln.R @@ -1,149 +1,37 @@ +# chargement des données ecln annuelles sur X -# chargement_ecln - -# librairies ------------ -library(readxl) library(tidyverse) -library(tricky) -library(lubridate) -library(COGiter) -library(DBI) -library(RPostgreSQL) -library(datalibaba) -library(googlesheets4) rm(list = ls()) -# chargement des données ECLN (Enquete sur la commercialisation des logements neufs) -------- -# fichier cree a partir d une requete geokit 3 : -# "Dossiers publics/geokit3/Regions Pays de la Loire/DREAL/INDICATEURS TER DATA LAB/gk3_ecln" -ecln <- read_excel("extdata/gk3_ecln.xlsx",sheet=1) - - -# liste des communes COGiter ------ -com_fr<- communes %>% - select(DEPCOM) %>% - mutate(DEPCOM=as.character(DEPCOM)) %>% - pull(DEPCOM) - - -# calcul --------- -ecln1<-ecln %>% - # filter(date>=2008)%>% - mutate(type_construction=str_replace(type_construction,'1. Individuel', "individuel") %>% - str_replace('2. Collectif',"collectif")) - -ecln2<-ecln1 %>% - group_by(date,depcom) %>% - summarise(nb_logt_mis_en_vente=sum(nb_logt_mis_en_vente,na.rm=T), - nb_logt_reserves_a_la_vente=sum(nb_logt_reserves_a_la_vente,na.rm=T), - nb_logt_reserves_a_la_vente_en_invest_loc=sum(nb_logt_reserves_a_la_vente_en_invest_loc,na.rm=T), - nb_logt_en_cours=sum(nb_logt_en_cours,na.rm=T), - prix_total_des_ventes=sum(prix_total_des_ventes,na.rm=T), - surface_totale_des_ventes=sum(surface_totale_des_ventes,na.rm=T), - nb_promoteurs_mev=sum(nb_promoteurs_mev,na.rm=T), - nb_promoteurs_reserves=sum(nb_promoteurs_reserves,na.rm=T), - nb_promoteurs_en_cours=sum(nb_promoteurs_en_cours,na.rm=T) - ) %>% - ungroup() %>% - mutate(type_construction="total")%>% - as.data.frame() - -ecln<-bind_rows(ecln1,ecln2) %>% - rename(nb_logt_vendus = nb_logt_reserves_a_la_vente, - nb_logt_vendus_en_invest_loc = nb_logt_reserves_a_la_vente_en_invest_loc, - nb_promoteurs_vendus = nb_promoteurs_reserves)%>% - gather(variable,valeur,nb_logt_mis_en_vente:`nb_promoteurs_en_cours`)%>% - mutate(variable=paste0(variable,".",type_construction)) %>% - select(depcom,date,variable,valeur)%>% - mutate(date=make_date(date,12,31))%>% - mutate_if(is.character,as.factor) %>% - mutate(depcom = fct_expand(depcom, com_fr)) %>% - complete(depcom,date,variable,fill = list(valeur =0)) %>% +load("X:/SCTE/CSD/DONNEES_CONFIDENTIELLES/_niveau_2/Conjoncture/ECLN/indic_ecln.rda") + +# filtre pour ne garder que les données annuelles +tab_ecln <- indic_ecln %>% + filter(TypeIndicateur=="Cumul annuel", + str_detect(Periode, "-12-31")) %>% + mutate(Indicateur=tolower(Indicateur), + Indicateur=str_replace(Indicateur," - ","."), + Indicateur=str_replace(Indicateur,"appartements","appart"), + Indicateur=str_replace(Indicateur,"constructions neuves","cons_neuves"), + Indicateur=str_replace(Indicateur,"constructions sur existant","cons_sur_exist"), + Indicateur=str_replace(Indicateur,"mises en vente","mev")) + +tab_valeurs <- tab_ecln %>% + select(TypeZone,Zone,CodeZone,date=Periode,variable=Indicateur, valeur=Valeur) +tab_evol <- tab_ecln %>% + select(TypeZone,Zone,CodeZone,date=Periode,variable=Indicateur, valeur=TauxEvolution12Mois) %>% + mutate(variable = paste0("evol12m_",variable)) +source_ecln <- bind_rows(tab_valeurs,tab_evol) %>% pivot_wider(names_from = variable,values_from = valeur) +# versement dans le sgbd/datamart.portrait_territoires + documentation ------------- +source("R/poster_documenter_ind.R") -# versement dans le sgbd/datamart.portrait_territoires ------------- -poster_data(data = ecln, - db = "datamart", - schema = "portrait_territoires", - table = "source_ecln", - 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(ecln), 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_ecln", 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_ecln", - user = "does") - - - - - - - - - - - - +poster_documenter_ind( + df = source_ecln, + nom_table_sgbd = "cogifiee_ecln", + comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs" +) +rm(list=ls()) diff --git a/data-raw/chargement_eptb.R b/data-raw/chargement_eptb.R index a5e6024610460daf790cb7fd2d57762a4087a6d7..4bf0f90d0f1e5ccacab408ad26a0b0f27b46e732 100644 --- a/data-raw/chargement_eptb.R +++ b/data-raw/chargement_eptb.R @@ -1,116 +1,64 @@ +# chargement_eptb (a exécuter dans sur le serveur du SDES) -# chargement_eptb +# installation propre.eptb +# remotes::install_gitlab("rdes_dreal/propre.eptb") - -# librairies -------- +# librairies -------------- library(tidyverse) -library(readxl) -library(tricky) library(lubridate) library(DBI) library(RPostgreSQL) library(datalibaba) library(googlesheets4) +library(propre.eptb) rm(list = ls()) +eptb <- propre.eptb::dataprep(nom_reg = "Bretagne", df = "/nfs/data/partage-EPTB/propre.EPTB/tab_result.parquet") %>% + filter (TypeZone != "Densité") %>% + select(-Zone_de_ref,-Zone_de_comp) %>% + rename(date=millesime) %>% + mutate_if(is.factor,as.character) %>% + mutate(date= as.Date(paste0(date,"-12-31"))) + +# versement dans le sgbd EcoSQL/datamart.portrait_territoires ------------- + +source("R/poster_documenter_ind.R", encoding = "UTF-8") +poster_documenter_ind( + df = eptb, + nom_table_sgbd = "cogifiee_eptb", + comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs", + secret = TRUE, + user = "ecosql_stat", + serveur = Sys.getenv("server_ecosql") +) + + +#------------------------------------------------------------------------------------------------------------------ +#------------------------------------------------------------------------------------------------------------------ +# 2e partie, à éxécuter sur le PC de bureau (hors serveur SDES) +#------------------------------------------------------------------------------------------------------------------ +#------------------------------------------------------------------------------------------------------------------ + +# librairies ------ +library(dplyr) +library(COGiter) +library(datalibaba) +library(googlesheets4) -# chargement et calcul ---------- -# chargement des données EPTB (Enquete sur le prix des terrains à batir) -------- -# fichier cree a partir d une requete geokit 3 : -# "Dossiers publics/geokit3/Regions Pays de la Loire/DREAL/INDICATEURS TER DATA LAB/gk3_eptb" -eptb <-bind_rows(read_excel("extdata/gk3_eptb.xlsx",sheet=1), - read_excel("extdata/gk3_eptb.xlsx",sheet=2), - read_excel("extdata/gk3_eptb.xlsx",sheet=3)) %>% - rename(date = 'eptb - Année', - depcom = 'eptb - Code de la commune', - nombre_d_observations_non_pondere='eptb - Nombre d observations (non pondéré)', - nombre_de_maisons_terrain_achete_ou_non='eptb - Nombre de maisons (terrain acheté ou non)', - prix_total_des_maisons_en_euros='eptb - Prix total des maisons (en euros)', - surface_totale_des_maisons_en_m2='eptb - Surface totale des maisons (en m2)', - nombre_de_terrains_achetes='eptb - Nombre de terrains achetés', - prix_total_des_maisons_en_euros_avec_terrain_achete='eptb - Prix total des maisons (en euros) avec terrain achete', - prix_total_des_terrains_en_euros='eptb - Prix total des terrains (en euros)', - superficie_totale_des_terrains_achetes_en_m2='eptb - Superficie totale des terrains achetés (en m²)') %>% - gather(variable,valeur,nombre_d_observations_non_pondere:superficie_totale_des_terrains_achetes_en_m2) %>% - select(depcom,date,variable,valeur) %>% - filter(date>=2008) %>% - mutate(date=make_date(date,12,31))%>% - mutate_if(is.character,as.factor) %>% - complete(depcom,date,variable,fill = list(valeur =0)) %>% - pivot_wider(names_from = variable,values_from = valeur) %>% - filter(depcom != "97123") - -# versement dans le sgbd/datamart.portrait_territoires ------------- -poster_data(data = eptb, - db = "datamart", - schema = "portrait_territoires", - table = "source_eptb", - 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(eptb), 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" - ) - ) - -1## 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_eptb", 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$", "") +rm(list = ls()) +source("R/poster_documenter_ind.R") -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") +# récupération des données sur EcoSQL +df_cogifie <- importer_data(db = "datamart", + schema = "portrait_territoires", + table = "cogifiee_eptb", + user = "ecosql_stat", + server = Sys.getenv("server_ecosql")) -## commentaires de la table +# process SGBD +poster_documenter_ind(df = df_cogifie, nom_table_sgbd = "cogifiee_eptb", + comm_source_en_plus = "", nom_script_sce = "chargement_eptb", user = "does", serveur = NULL, secret = FALSE) -commenter_table(comment = metadata_source, - db = "datamart", - schema = "portrait_territoires", - table = "source_eptb", - user = "does") +rm(list=ls()) diff --git a/data-raw/chargement_lgt_rgp_insee.R b/data-raw/chargement_lgt_rgp_insee.R index d704df4ef9c0b2e4fbdbc10b1a79004049ce9d8a..3946add566c148536486a407aacef03dd25f2db0 100644 --- a/data-raw/chargement_lgt_rgp_insee.R +++ b/data-raw/chargement_lgt_rgp_insee.R @@ -17,14 +17,15 @@ rm(list=ls()) # chargement des données logement du dernier recensement INSEE ---------- + # doc INSEE disponible à https://www.insee.fr/fr/statistiques/7631186?sommaire=7631713 -# Logement en 2020 - Recensement de la population - Base des principaux indicateurs +# Logement en 2021 - Recensement de la population - Base des principaux indicateurs # paramètres à saisir -url <- "https://www.insee.fr/fr/statistiques/fichier/7631186/base-cc-logement-2020_xlsx.zip" -mil <- c(2020, 2014, 2009) # mettre le millesime le plus récent en premier +url <- "https://www.insee.fr/fr/statistiques/fichier/8202349/base-cc-logement-2021_xlsx.zip" +mil <- c(2021, 2015, 2010) # mettre le millesime le plus récent en premier mil_court <- substr(mil, 3,4) -fic <- "base-cc-logement-2020" +fic <- "base-cc-logement-2021" # préfixe des variables à enlever (indique le millésime) var_mil <- paste0("P", mil_court,"_") @@ -73,7 +74,7 @@ setdiff(noms_var, lib_var$variable_deb) # rien attendu (character(0)) # calcul des variables ------ -lgt_rp <- bind_rows(lgt_rp_actu, lgt_rp_old, lgt_rp_very_old) %>% +lgt_rp <- bind_rows(lgt_rp_actu, lgt_rp_old, lgt_rp_very_old) %>% # mutate(RP_ACHTOT = coalesce(RP_ACHTT, RP_ACHTOT)) %>% # select(-RP_ACHTT) %>% select(date = annee, depcom = CODGEO, everything(), -REG, -DEP, -LIBGEO) %>% diff --git a/data-raw/chargement_observatoire_artificialisation.R b/data-raw/chargement_observatoire_artificialisation.R index 035ef78c50088c951d51f8a88e71fe9ed01fb590..43a64bbe16d8cb881a5cb015a50aa3c39c46b0df 100644 --- a/data-raw/chargement_observatoire_artificialisation.R +++ b/data-raw/chargement_observatoire_artificialisation.R @@ -35,36 +35,33 @@ rm(list = ls()) # # [91] "surfcom2021" -# Les données de l'observatoire de l'artificialisation 2009-2022 ont été publiées en juillet 2023 : +# Les données de l'observatoire de l'artificialisation 2009-2023 ont été publiées en octobre 2024 : # https://cerema.app.box.com/v/pnb-action7-indicateurs-ff -# un clic droit sur le répertoire "donnees nationales conso espaces" fait apparaître une popup de téléchargement -# qui permet de récupérer le fichier "donnees nationales conso espaces.zip" qu'on range dans extdata et qu'on dézipe à la main +# ouvrir le répertoire "donnees nationales conso espaces" fait apparaître +# le fichier "conso2009_2023_resultats_com.csv" qu'on télécharge et range dans extdata obs_artif_conso_com <- utils::read.csv( - file = "extdata/donnees nationales conso espaces/obs_artif_conso_com_2009_2022.csv", + file = "extdata/conso2009_2023_resultats_com.csv", header = TRUE, sep = ";", encoding = "UTF-8" ) -# names(obs_artif_conso_com) -# [1] "idcom" "idcomtxt" "idreg" "idregtxt" "iddep" "iddeptxt" "epci22" "epci22txt" "scot" -# [10] "aav2020" "aav2020txt" "aav2020_typo" "naf09art10" "art09act10" "art09hab10" "art09mix10" "art09rou10" "art09fer10" -# [19] "art09inc10" "naf10art11" "art10act11" "art10hab11" "art10mix11" "art10rou11" "art10fer11" "art10inc11" "naf11art12" -# [28] "art11act12" "art11hab12" "art11mix12" "art11rou12" "art11fer12" "art11inc12" "naf12art13" "art12act13" "art12hab13" -# [37] "art12mix13" "art12rou13" "art12fer13" "art12inc13" "naf13art14" "art13act14" "art13hab14" "art13mix14" "art13rou14" -# [46] "art13fer14" "art13inc14" "naf14art15" "art14act15" "art14hab15" "art14mix15" "art14rou15" "art14fer15" "art14inc15" -# [55] "naf15art16" "art15act16" "art15hab16" "art15mix16" "art15rou16" "art15fer16" "art15inc16" "naf16art17" "art16act17" -# [64] "art16hab17" "art16mix17" "art16rou17" "art16fer17" "art16inc17" "naf17art18" "art17act18" "art17hab18" "art17mix18" -# [73] "art17rou18" "art17fer18" "art17inc18" "naf18art19" "art18act19" "art18hab19" "art18mix19" "art18rou19" "art18fer19" -# [82] "art18inc19" "naf19art20" "art19act20" "art19hab20" "art19mix20" "art19rou20" "art19fer20" "art19inc20" "naf20art21" -# [91] "art20act21" "art20hab21" "art20mix21" "art20rou21" "art20fer21" "art20inc21" "naf21art22" "art21act22" "art21hab22" -# [100] "art21mix22" "art21rou22" "art21fer22" "art21inc22" "naf09art22" "art09act22" "art09hab22" "art09mix22" "art09inc22" -# [109] "art09rou22" "art09fer22" "artcom0922" "pop13" "pop19" "pop1319" "men13" "men19" "men1319" -# [118] "emp13" "emp19" "emp1319" "mepart1319" "menhab1319" "artpop1319" "surfcom2022" +# > names(observatoire_artificialisation) +# [1] "idcom" "naf09art10" "art09act10" "art09hab10" "art09mix10" "art09rou10" "art09fer10" "art09inc10" "naf10art11" +# [10] "art10act11" "art10hab11" "art10mix11" "art10rou11" "art10fer11" "art10inc11" "naf11art12" "art11act12" "art11hab12" +# [19] "art11mix12" "art11rou12" "art11fer12" "art11inc12" "naf12art13" "art12act13" "art12hab13" "art12mix13" "art12rou13" +# [28] "art12fer13" "art12inc13" "naf13art14" "art13act14" "art13hab14" "art13mix14" "art13rou14" "art13fer14" "art13inc14" +# [37] "naf14art15" "art14act15" "art14hab15" "art14mix15" "art14rou15" "art14fer15" "art14inc15" "naf15art16" "art15act16" +# [46] "art15hab16" "art15mix16" "art15rou16" "art15fer16" "art15inc16" "naf16art17" "art16act17" "art16hab17" "art16mix17" +# [55] "art16rou17" "art16fer17" "art16inc17" "naf17art18" "art17act18" "art17hab18" "art17mix18" "art17rou18" "art17fer18" +# [64] "art17inc18" "naf18art19" "art18act19" "art18hab19" "art18mix19" "art18rou19" "art18fer19" "art18inc19" "naf19art20" +# [73] "art19act20" "art19hab20" "art19mix20" "art19rou20" "art19fer20" "art19inc20" "naf20art21" "art20act21" "art20hab21" +# [82] "art20mix21" "art20rou21" "art20fer21" "art20inc21" "naf21art22" "art21act22" "art21hab22" "art21mix22" "art21rou22" +# [91] "art21fer22" "art21inc22" "naf22art23" "art22act23" "art22hab23" "art22mix23" "art22rou23" "art22fer23" "art22inc23" +# [100] "naf09art23" "art09act23" "art09hab23" "art09mix23" "art09inc23" "art09rou23" "art09fer23" - -# Au 22/02/2024 : pas de données plus récentes. +# Au 13/03/2025 : pas de données plus récentes. # calcul des indicateurs communaux ----------- @@ -77,8 +74,8 @@ observatoire_artificialisation <- obs_artif_conso_com %>% iddeptxt, # epci21, # epci21txt, - epci22, - epci22txt, + epci23, + epci23txt, scot, aav2020, aav2020txt, @@ -135,13 +132,13 @@ observatoire_artificialisation <- obs_artif_conso_com %>% # complétude de la liste des communes ------- -liste_COG_2023 <- COGiter::communes %>% +liste_COG <- COGiter::communes %>% dplyr::select(depcom = DEPCOM) %>% dplyr::pull() %>% - as.character() # 34945 obs + as.character() # 34935 obs source_observatoire_artificialisation <- observatoire_artificialisation %>% - dplyr::mutate(depcom = forcats::fct_expand(depcom, liste_COG_2023)) %>% + dplyr::mutate(depcom = forcats::fct_expand(depcom, liste_COG)) %>% tidyr::complete( depcom, date, fill = list( flux_naf_artificialisation_activite = 0, diff --git a/data-raw/chargement_pop_rgp_insee.R b/data-raw/chargement_pop_rgp_insee.R index a258b33c66b6c67895eaff8c3018dfcc0da7b2ed..a231dab4556a4eb763f25081d5ecf46f8d4ba391 100644 --- a/data-raw/chargement_pop_rgp_insee.R +++ b/data-raw/chargement_pop_rgp_insee.R @@ -25,11 +25,11 @@ rm(list=ls()) # var_mil <- c(paste0("P", mil, "_"), paste0("C", mil, "_")) %>% gsub("20", "", .) # url <- "https://www.insee.fr/fr/statistiques/fichier/6456153/base-ccx-evol-struct-pop-2019.zip" # fic <- "base-cc-evol-struct-pop-2019" -mil <- c(2020, 2014, 2009) # mettre le plus récent en premier -mil2 <- c(20, 14, "09") +mil <- c(2021, 2015, 2010) # mettre le plus récent en premier +mil2 <- c(21, 15, "10") var_mil <- c(paste0("P", mil2, "_"), paste0("C", mil2, "_")) -url <- "https://www.insee.fr/fr/statistiques/fichier/7632446/base-cc-evol-struct-pop-2020_xlsx.zip" -fic <- "base-cc-evol-struct-pop-2020" +url <- "https://www.insee.fr/fr/statistiques/fichier/8201904/base-cc-evol-struct-pop-2021_xlsx.zip" +fic <- "base-cc-evol-struct-pop-2021" # chargement data --------- @@ -57,7 +57,7 @@ pop_very_old <- read_xlsx(path = paste0("extdata/", fic,".xlsx"), sheet = paste0 # retrait des variables de l'exploitation complémentaire qui sont absentes de l'exploitation principale nom_var_pop_very_old_a_oter <- setdiff(names(pop_very_old), names(pop_actu)) -pop_very_old <- pop_very_old %>% +pop_very_old <- pop_very_old %>% select(-all_of(nom_var_pop_very_old_a_oter)) diff --git a/data-raw/chargement_siclop.R b/data-raw/chargement_siclop.R index c690e985cf79bc171f16e04304e96a572a65cafc..be712a9e3330d44841f042e8ebf438f69aa97a6c 100644 --- a/data-raw/chargement_siclop.R +++ b/data-raw/chargement_siclop.R @@ -5,8 +5,6 @@ # (Si COGiter est bien à jour sur le serveur de dataviz.......) # scripts de collecte et nettoyage : https://gitlab-forge.din.developpement-durable.gouv.fr/dreal-pdl/csd/siclop/-/tree/main/scripts -rm(list=ls()) - ## librairies ---------- library(dplyr) library(tidyr) @@ -86,27 +84,105 @@ data_prep <- function(typzon) { nombre_annonces_appart_T4 = 0, nombre_annonces_appart_T5 = 0, `nombre_annonces_appart_T6 et +` = 0)) + + # total pour maisons + data_prep_indic4 <- data_prep_indic0 %>% + filter(type_logement == "maison") %>% + group_by(codezone, annee_annonce) %>% + summarise(nombre_annonces_maison = length(id_annonce), + loy_hc_moyen_maison = round(mean(loyer_hc, na.rm = T), 2), + surf_habitable_moyenne_maison = round(mean(surf_habitable, na.rm = T), 2), + loy_hc_mediane_maison = round(median(loyer_hc, na.rm = T), 2) + ) %>% + ungroup() %>% + complete(codezone, annee_annonce, fill = list(nombre_annonces_appart = 0)) + # maisons par nombre de pieces + data_prep_indic5 <- data_prep_indic0 %>% + filter(type_logement == "maison") %>% + group_by(codezone, annee_annonce, nombre_pieces) %>% + summarise(nombre_annonces_maison = length(id_annonce), + loy_hc_moyen_maison = round(mean(loyer_hc, na.rm = T), 2), + surf_habitable_moyenne_maison = round(mean(surf_habitable, na.rm = T), 2), + loy_hc_mediane_maison = round(median(loyer_hc, na.rm = T), 2)) %>% + pivot_wider(names_from = nombre_pieces, + values_from = c(nombre_annonces_maison, loy_hc_moyen_maison, surf_habitable_moyenne_maison, loy_hc_mediane_maison)) %>% + ungroup() %>% + complete(codezone, annee_annonce, fill = list(nombre_annonces_maison_T1 = 0, + nombre_annonces_maison_T2 = 0, + nombre_annonces_maison_T3 = 0, + nombre_annonces_maison_T4 = 0, + nombre_annonces_maison_T5 = 0, + `nombre_annonces_maison_T6 et +` = 0)) + # ensemble par nombre de pieces + data_prep_indic6 <- data_prep_indic0 %>% + group_by(codezone, annee_annonce, nombre_pieces) %>% + summarise(nombre_annonces_ensemble = length(id_annonce), + loy_hc_moyen_ensemble = round(mean(loyer_hc, na.rm = T), 2), + surf_habitable_moyenne_ensemble = round(mean(surf_habitable, na.rm = T), 2), + loy_hc_mediane_ensemble = round(median(loyer_hc, na.rm = T), 2)) %>% + pivot_wider(names_from = nombre_pieces, + values_from = c(nombre_annonces_ensemble, loy_hc_moyen_ensemble, surf_habitable_moyenne_ensemble, loy_hc_mediane_ensemble)) %>% + ungroup() %>% + complete(codezone, annee_annonce, fill = list(nombre_annonces_ensemble_T1 = 0, + nombre_annonces_ensemble_T2 = 0, + nombre_annonces_ensemble_T3 = 0, + nombre_annonces_ensemble_T4 = 0, + nombre_annonces_ensemble_T5 = 0, + `nombre_annonces_ensemble_T6 et +` = 0)) + # regroupement des données data_prep_indic <- data_prep_indic1 %>% left_join(data_prep_indic2, by = c("codezone", "annee_annonce")) %>% left_join(data_prep_indic3, by = c("codezone", "annee_annonce")) %>% + left_join(data_prep_indic4, by = c("codezone", "annee_annonce")) %>% + left_join(data_prep_indic5, by = c("codezone", "annee_annonce")) %>% + left_join(data_prep_indic6, by = c("codezone", "annee_annonce")) %>% mutate(date = make_date(annee_annonce, 12, 31)) %>% - rename(CodeZone = codezone, nombre_annonces_appart_T6_et_plus = "nombre_annonces_appart_T6 et +", + rename(CodeZone = codezone, + nombre_annonces_appart_T6_et_plus = "nombre_annonces_appart_T6 et +", surf_habitable_moyenne_appart_T6_et_plus = "surf_habitable_moyenne_appart_T6 et +", loy_hc_moyen_appart_T6_et_plus = "loy_hc_moyen_appart_T6 et +", - loy_hc_mediane_appart_T6_et_plus = "loy_hc_mediane_appart_T6 et +") %>% + loy_hc_mediane_appart_T6_et_plus = "loy_hc_mediane_appart_T6 et +", + nombre_annonces_maison_T6_et_plus = "nombre_annonces_maison_T6 et +", + surf_habitable_moyenne_maison_T6_et_plus = "surf_habitable_moyenne_maison_T6 et +", + loy_hc_moyen_maison_T6_et_plus = "loy_hc_moyen_maison_T6 et +", + loy_hc_mediane_maison_T6_et_plus = "loy_hc_mediane_maison_T6 et +", + nombre_annonces_ensemble_T6_et_plus = "nombre_annonces_ensemble_T6 et +", + surf_habitable_moyenne_ensemble_T6_et_plus = "surf_habitable_moyenne_ensemble_T6 et +", + loy_hc_moyen_ensemble_T6_et_plus = "loy_hc_moyen_ensemble_T6 et +", + loy_hc_mediane_ensemble_T6_et_plus = "loy_hc_mediane_ensemble_T6 et +" + ) %>% # mutate (TypeZone = colnames(siclop_exploitation[{zonag}]) ) %>% mutate(TypeZone = zonag) %>% - select(TypeZone, CodeZone, date, nombre_annonces_ensemble, nombre_annonces_appart, nombre_annonces_appart_T1, - nombre_annonces_appart_T2, nombre_annonces_appart_T3, nombre_annonces_appart_T4, - nombre_annonces_appart_T5, nombre_annonces_appart_T6_et_plus, surf_habitable_moyenne_ensemble, - surf_habitable_moyenne_appart, surf_habitable_moyenne_appart_T1, surf_habitable_moyenne_appart_T2, - surf_habitable_moyenne_appart_T3, surf_habitable_moyenne_appart_T4, surf_habitable_moyenne_appart_T5, - surf_habitable_moyenne_appart_T6_et_plus, loy_hc_moyen_ensemble, loy_hc_moyen_appart, loy_hc_moyen_appart_T1, - loy_hc_moyen_appart_T2, loy_hc_moyen_appart_T3, loy_hc_moyen_appart_T4, loy_hc_moyen_appart_T5, - loy_hc_moyen_appart_T6_et_plus, loy_hc_mediane_ensemble, loy_hc_mediane_appart, loy_hc_mediane_appart_T1, - loy_hc_mediane_appart_T2, loy_hc_mediane_appart_T3, loy_hc_mediane_appart_T4, loy_hc_mediane_appart_T5, - loy_hc_mediane_appart_T6_et_plus + select(TypeZone, CodeZone, date, + nombre_annonces_ensemble, nombre_annonces_appart, nombre_annonces_maison, + nombre_annonces_ensemble_T1,nombre_annonces_ensemble_T2, nombre_annonces_ensemble_T3, + nombre_annonces_ensemble_T4,nombre_annonces_ensemble_T5, nombre_annonces_ensemble_T6_et_plus, + nombre_annonces_appart_T1,nombre_annonces_appart_T2, nombre_annonces_appart_T3, + nombre_annonces_appart_T4,nombre_annonces_appart_T5, nombre_annonces_appart_T6_et_plus, + nombre_annonces_maison_T1,nombre_annonces_maison_T2, nombre_annonces_maison_T3, + nombre_annonces_maison_T4,nombre_annonces_maison_T5, nombre_annonces_maison_T6_et_plus, + surf_habitable_moyenne_ensemble, surf_habitable_moyenne_appart,surf_habitable_moyenne_maison, + surf_habitable_moyenne_ensemble_T1, surf_habitable_moyenne_ensemble_T2,surf_habitable_moyenne_ensemble_T3, + surf_habitable_moyenne_ensemble_T4, surf_habitable_moyenne_ensemble_T5,surf_habitable_moyenne_ensemble_T6_et_plus, + surf_habitable_moyenne_appart_T1, surf_habitable_moyenne_appart_T2,surf_habitable_moyenne_appart_T3, + surf_habitable_moyenne_appart_T4, surf_habitable_moyenne_appart_T5,surf_habitable_moyenne_appart_T6_et_plus, + surf_habitable_moyenne_maison_T1, surf_habitable_moyenne_maison_T2,surf_habitable_moyenne_maison_T3, + surf_habitable_moyenne_maison_T4, surf_habitable_moyenne_maison_T5,surf_habitable_moyenne_maison_T6_et_plus, + loy_hc_moyen_ensemble,loy_hc_moyen_appart,loy_hc_moyen_maison, + loy_hc_moyen_ensemble_T1,loy_hc_moyen_ensemble_T2, loy_hc_moyen_ensemble_T3, + loy_hc_moyen_ensemble_T4, loy_hc_moyen_ensemble_T5,loy_hc_moyen_ensemble_T6_et_plus, + loy_hc_moyen_appart_T1,loy_hc_moyen_appart_T2, loy_hc_moyen_appart_T3, + loy_hc_moyen_appart_T4, loy_hc_moyen_appart_T5,loy_hc_moyen_appart_T6_et_plus, + loy_hc_moyen_maison_T1,loy_hc_moyen_maison_T2, loy_hc_moyen_maison_T3, + loy_hc_moyen_maison_T4, loy_hc_moyen_maison_T5,loy_hc_moyen_maison_T6_et_plus, + loy_hc_mediane_ensemble,loy_hc_mediane_appart,loy_hc_mediane_maison, + loy_hc_mediane_ensemble_T1,loy_hc_mediane_ensemble_T2, loy_hc_mediane_ensemble_T3, + loy_hc_mediane_ensemble_T4, loy_hc_mediane_ensemble_T5,loy_hc_mediane_ensemble_T6_et_plus, + loy_hc_mediane_appart_T1,loy_hc_mediane_appart_T2, loy_hc_mediane_appart_T3, + loy_hc_mediane_appart_T4, loy_hc_mediane_appart_T5,loy_hc_mediane_appart_T6_et_plus, + loy_hc_mediane_maison_T1,loy_hc_mediane_maison_T2, loy_hc_mediane_maison_T3, + loy_hc_mediane_maison_T4, loy_hc_mediane_maison_T5,loy_hc_mediane_maison_T6_et_plus ) return(data_prep_indic) } diff --git a/data-raw/cogification_ecln.R b/data-raw/cogification_ecln.R deleted file mode 100644 index 9fbb158e3a51087e73efa973d65d63c26bc439c4..0000000000000000000000000000000000000000 --- a/data-raw/cogification_ecln.R +++ /dev/null @@ -1,71 +0,0 @@ - -# cogification_ecln - - -# librairies ------ -library(DBI) -library(RPostgreSQL) -library(dplyr) -library(COGiter) -library(datalibaba) - -rm(list = ls()) - -source_ecln <- importer_data(db = "datamart", - schema = "portrait_territoires", - table = "source_ecln") - -cogifiee_ecln<-cogifier(source_ecln %>% rename(DEPCOM=depcom))%>% - mutate_if(is.factor,as.character) - -poster_data(data = cogifiee_ecln, - db = "datamart", - schema = "portrait_territoires", - table = "cogifiee_ecln", - 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_ecln", - 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_ecln", - 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_ecln", - user = "does" -) diff --git a/data-raw/cogification_eptb.R b/data-raw/cogification_eptb.R deleted file mode 100644 index a75f6c773713fd0c3783d6e48457c7963ffd8ed3..0000000000000000000000000000000000000000 --- a/data-raw/cogification_eptb.R +++ /dev/null @@ -1,75 +0,0 @@ - -# cogification_eptb - - -# librairies ------ -library(DBI) -library(RPostgreSQL) -library(dplyr) -library(COGiter) -library(datalibaba) - -rm(list = ls()) - - -source_eptb <- importer_data(db = "datamart", - schema = "portrait_territoires", - table = "source_eptb") - -cogifiee_eptb<-cogifier(source_eptb %>% rename(DEPCOM=depcom))%>% - mutate_if(is.factor,as.character) - - -poster_data(data = cogifiee_eptb, - db = "datamart", - schema = "portrait_territoires", - table = "cogifiee_eptb", - 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_eptb", - 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_eptb", - 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_eptb", - user = "does" -) - diff --git a/data-raw/indicateur_ecln.R b/data-raw/indicateur_ecln.R deleted file mode 100644 index 653df3164ed5f5d0444915f97ca1dc5b6851cc11..0000000000000000000000000000000000000000 --- a/data-raw/indicateur_ecln.R +++ /dev/null @@ -1,113 +0,0 @@ - -# indicateur_ecln - -# librairies --------- -library(dplyr) -library(tidyr) -library(DBI) -library(RPostgreSQL) -library(datalibaba) -library(googlesheets4) -library(tidyverse) - -rm(list=ls()) - -# chargement data ------------- -secretise_ecln <- importer_data(db = "datamart", - schema = "portrait_territoires", - table = "secretise_ecln") - - -# calcul ------- -indicateur_ecln<-secretise_ecln %>% - mutate(cout_moyen_d_un_logement_vendu_par_les_promoteurs.collectif = round(prix_total_des_ventes.collectif / nb_logt_vendus.collectif,digits = 1)) %>% - mutate(cout_moyen_d_un_logement_vendu_par_les_promoteurs.individuel = round(prix_total_des_ventes.individuel / nb_logt_vendus.individuel,digits = 1)) %>% - mutate(cout_moyen_d_un_logement_vendu_par_les_promoteurs.total = round(prix_total_des_ventes.total / nb_logt_vendus.total,digits = 1)) %>% - - # mutate(cout_moyen_par_m2_de_SHON_d_un_logement_vendu_par_les_promoteurs.collectif = round(prix_total_des_ventes.collectif / surface_totale_des_ventes.collectif,digits = 1)) %>% - # mutate(cout_moyen_par_m2_de_SHON_d_un_logement_vendu_par_les_promoteurs.individuel = round(prix_total_des_ventes.individuel / surface_totale_des_ventes.individuel,digits = 1))%>% - # mutate(cout_moyen_par_m2_de_SHON_d_un_logement_vendu_par_les_promoteurs.total = round(prix_total_des_ventes.total / surface_totale_des_ventes.total,digits = 1))%>% - - mutate(cout_moyen_par_m2_de_SHON_logt_vendu_par_promoteurs.collectif = round(prix_total_des_ventes.collectif / surface_totale_des_ventes.collectif,digits = 1)) %>% - mutate(cout_moyen_par_m2_de_SHON_logt_vendu_par_promoteurs.individuel = round(prix_total_des_ventes.individuel / surface_totale_des_ventes.individuel,digits = 1))%>% - mutate(cout_moyen_par_m2_de_SHON_logt_vendu_par_promoteurs.total = round(prix_total_des_ventes.total / surface_totale_des_ventes.total,digits = 1))%>% - - select(-c(nb_logt_en_cours.collectif:`nb_logt_mis_en_vente.total`)) %>% - mutate_if(is.factor, as.character) - - -# versement dans le sgbd/datamart.portrait_territoires ------------- -poster_data(data = indicateur_ecln, - db = "datamart", - schema = "portrait_territoires", - table = "indicateur_ecln", - 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_ecln), 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_ecln", 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 = "indicateur_ecln", - user = "does") - -rm(list=ls()) diff --git a/data-raw/indicateur_eptb.R b/data-raw/indicateur_eptb.R deleted file mode 100644 index 3545e7526eb7ec8b300e17848d7de1b3b4558be0..0000000000000000000000000000000000000000 --- a/data-raw/indicateur_eptb.R +++ /dev/null @@ -1,107 +0,0 @@ - -# indicateur_eptb - -# librairies --------- -library(googlesheets4) -library(tidyverse) -library(dplyr) -library(tidyr) -library(DBI) -library(RPostgreSQL) -library(datalibaba) - -rm(list=ls()) - - -secretise_eptb <- importer_data(db = "datamart", - schema = "portrait_territoires", - table = "secretise_eptb") - - -# calcul ----------- -indicateur_eptb<-secretise_eptb %>% - mutate(cout_global_moyen_constructions_neuves_de_particuliers = round((prix_total_des_maisons_en_euros_avec_terrain_achete + prix_total_des_terrains_en_euros) /nombre_de_terrains_achetes ,digits = 1)) %>% - mutate(cout_moyen_maison_par_m2_pour_constructions_neuves_individuelle = round(prix_total_des_maisons_en_euros / surface_totale_des_maisons_en_m2,digits = 1)) %>% - mutate(cout_moyen_maison_pour_constructions_neuves_individuelles = round(prix_total_des_maisons_en_euros / nombre_de_maisons_terrain_achete_ou_non,digits = 1)) %>% - mutate(cout_moyen_terrain_par_m2_pour_constructions_neuves_individuell = round(prix_total_des_terrains_en_euros / superficie_totale_des_terrains_achetes_en_m2,digits = 1))%>% - mutate(cout_moyen_terrain_pour_constructions_neuves_individuelles = round(prix_total_des_terrains_en_euros / nombre_de_terrains_achetes,digits = 1)) %>% - mutate(superficie_moyenne_des_terrains_achetes = round(superficie_totale_des_terrains_achetes_en_m2 / nombre_de_terrains_achetes,digits = 1)) %>% - mutate(surface_moyenne_des_maisons_construites = round(surface_totale_des_maisons_en_m2 / nombre_de_maisons_terrain_achete_ou_non,digits = 1)) %>% - mutate(part_du_terrain_dans_le_cout_total_du_projet = round(prix_total_des_terrains_en_euros / (prix_total_des_maisons_en_euros_avec_terrain_achete + prix_total_des_terrains_en_euros)*100,digits = 1)) %>% - select(-c(nombre_d_observations_non_pondere:surface_totale_des_maisons_en_m2)) %>% - mutate_if(is.factor, as.character) - - -# versement dans le sgbd/datamart.portrait_territoires ------------- -poster_data(data = indicateur_eptb, - db = "datamart", - schema = "portrait_territoires", - table = "indicateur_eptb", - 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_eptb), 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_eptb", 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 = "indicateur_eptb", - user = "does") diff --git a/data-raw/secret_ecln.R b/data-raw/secret_ecln.R deleted file mode 100644 index 5bfe6c6bf40860f42772e827b333edda8a24624e..0000000000000000000000000000000000000000 --- a/data-raw/secret_ecln.R +++ /dev/null @@ -1,302 +0,0 @@ - -# secret_ecln - -# librairies ------------- -library(dplyr) -library(tidyr) -library(lubridate) -library(COGiter) -library(DBI) -library(RPostgreSQL) -library(datalibaba) -library(googlesheets4) - -rm(list=ls()) - - -# chargement data ------------- -cogifiee_ecln <- importer_data(db = "datamart", - schema = "portrait_territoires", - table = "cogifiee_ecln") - -data_cogifiee<-pivot_longer(cogifiee_ecln, - cols = nb_logt_en_cours.collectif : surface_totale_des_ventes.total, - names_to = "variable", - values_to = "valeur") %>% - mutate_if(is.character,as.factor) - -# tranches_ecln <- read.csv2('metadata/secret_ecln.csv', as.is = TRUE, encoding = "UTF-8" ) - -## 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 -tranches_ecln <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277", - sheet = "secret_ecln") - - -data_ecln <- left_join(data_cogifiee, liste_zone, by= c("CodeZone","TypeZone","Zone")) %>% - left_join(epci %>% select(EPCI,NOM_EPCI), by = "EPCI") - - -# distinction des données à secrétiser --------- - -# listes des variables logt et promoteurs -variables_logt <- tranches_ecln %>% - pull(variable) -variables_promoteurs <- tranches_ecln %>% - pull(variable_associee) %>% - unique() - -# table des nb promoteurs -data_promoteurs <- data_ecln %>% - filter (variable %in% variables_promoteurs) %>% - rename(variable_associee=variable, nb_promoteurs=valeur) - -#table des données -data_ecln_donnees <- data_ecln %>% - filter (variable %in% variables_logt) - -data_ecln_donnees <- left_join(data_ecln_donnees, tranches_ecln, by= "variable") -data_ecln_donnees <- left_join(data_ecln_donnees, data_promoteurs %>% - select(TypeZone,CodeZone,date,variable_associee,nb_promoteurs), - by= c("TypeZone","CodeZone","date", "variable_associee") ) - -#liste des variables publiques ou non -variables_publiques <- tranches_ecln %>% - filter(secret=="0") %>% - pull(variable) -variables_non_publiques <- tranches_ecln %>% - filter(secret !="0") %>% - pull(variable) - -#table des données publiques -data_ecln_A <- data_ecln_donnees %>% - filter (variable %in% variables_publiques| - TypeZone == "France" ) %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) %>% - mutate(valeur=as.character(valeur)) - -#table des données à secrétiser -data_ecln_B <- data_ecln_donnees %>% - filter (variable %in% variables_non_publiques & - TypeZone %in% c("Communes","Epci","Régions","Départements")) - - -# secrétisation des données ----------- -secret_communes<-data_ecln_B %>% - filter(TypeZone=="Communes") - -#secret induit, pour une meme variable et un meme epci, pour ne pas retrouver la valeur d'une commune -#en faisant la somme des communes - -secret_communes<-secret_communes %>% - group_by(variable,EPCI,date) %>% - mutate(A_nb_inf3=length(which(nb_promoteurs<3))) %>% #compte combien inférieur à 3 - mutate(A_rang=rank(nb_promoteurs, ties.method = "first")) #classe pour repérer les 2 plus petites valeurs -secret_communes$A_sec<-case_when( - secret_communes$nb_promoteurs<3 ~ 1, #secret pour toutes les nb_promoteurs inférieurs à 3 - secret_communes$A_nb_inf3== 0 ~ 0, #enlève le secret si aucune des communes rang 1 et 2 inférieur à 3 - secret_communes$A_rang<3 ~ 1, #secret sur les 2 communes avec valeurs les plus basses - TRUE ~ 0) - -# secret induit, pour une meme categorie et une meme commune, pour ne pas retrouver la valeur d'une variable -# en faisant la somme des variables de la commune - -secret_communes<-secret_communes %>% - group_by(categorie,Zone,date) %>% - mutate(B_nb_inf3=length(which(nb_promoteurs<3))) %>% #compte combien inférieur à 3 - mutate(B_rang=rank(nb_promoteurs, ties.method = "first")) #classe pour repérer les 2 plus petites valeurs -secret_communes$B_sec<-case_when( - secret_communes$B_nb_inf3== 0 ~ 0, #enlève le secret si aucune des communes rang 1 et 2 inférieur à 11 - secret_communes$B_rang<3 ~ 1, #secret sur les 2 communes avec valeurs les plus basses - TRUE ~ 0) - -# masque le collectif pour une commune dont l'individuel a été masqué par le secret induit -secret_communes <- secret_communes %>% - mutate (somme_secrets = A_sec + B_sec) %>% - group_by(CodeZone,categorie,date) %>% #pour chaque commune - mutate(a_secretiser=length(which(somme_secrets>0))) # secretise toutes les donnes groupees - -# regroupement des secrets, masquage des valeurs -secret_communes<-secret_communes %>% - mutate(valeur=as.character(valeur)) -secret_communes$valeur<-case_when( - is.na(secret_communes$nb_promoteurs)~ "nc", - secret_communes$a_secretiser > 0 ~ "nc", #remplace valeur par "nc" si secret stat - TRUE ~ secret_communes$valeur) -secret_communes<-secret_communes %>% - ungroup() %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) - - -# secretisation des EPCI ----- - -secret_epci<- data_ecln_B %>% - filter(TypeZone =="Epci") - -# secret induit, pour une meme categorie et un meme epci, pour ne pas retrouver la valeur d'une variable -# en faisant la somme des variables de l'Epci - -secret_epci<-secret_epci %>% - group_by(categorie,CodeZone,date) %>% - mutate(B_nb_inf3=length(which(nb_promoteurs<3))) %>% #compte combien inférieur à 3 - mutate(B_rang=rank(nb_promoteurs, ties.method = "first")) #classe pour repérer les 2 plus petites valeurs -secret_epci$B_sec<-case_when( - secret_epci$valeur<3 ~ 1, #secret pour toutes les valeurs inférieures à 3 - secret_epci$B_nb_inf3== 0 ~ 0, #enlève le secret si aucune des communes rang 1 et 2 inférieur à 3 - secret_epci$B_rang<3 ~ 1, #secret sur les 2 communes avec valeurs les plus basses - TRUE ~ 0) - -# regroupement des secrets, masquage des valeurs -secret_epci<-secret_epci %>% - mutate(valeur=as.character(valeur)) -secret_epci$valeur<-case_when( - is.na(secret_epci$nb_promoteurs)~ "nc", - secret_epci$B_sec== 1 ~ "nc", #remplace valeur par "nc" si secret stat - TRUE ~ secret_epci$valeur) -secret_epci<-secret_epci %>% - ungroup() %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) - - -# secretisation Départements et Régions ----- - -secret_dep_reg<- data_ecln_B %>% - filter(TypeZone %in% c("Régions","Départements")) - - - #table des données publiques departement et regions -public_dep_reg_A <- secret_dep_reg %>% - filter (!(variable %in% c("prix_total_des_ventes.collectif","prix_total_des_ventes.individuel","prix_total_des_ventes.total" ))) %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) %>% - mutate(valeur=as.character(valeur)) - - #table des données à secrétiser departement et regions -secret_dep_reg_B <- secret_dep_reg %>% - filter (variable %in% c("prix_total_des_ventes.collectif","prix_total_des_ventes.individuel","prix_total_des_ventes.total" )) - -#secret induit, pour une meme variable et une meme regioçn, pour ne pas retrouver la valeur d'un département -#en faisant la somme des partements - -secret_dep_reg_B1<-secret_dep_reg_B %>% - mutate(REG = as.character(REG)) %>% - group_by(variable,REG,TypeZone,date) %>% - mutate(A_nb_inf3=length(which(nb_promoteurs<3))) %>% #compte combien inférieur à 3 - mutate(A_rang=rank(nb_promoteurs, ties.method = "first")) #classe pour repérer les 2 plus petites valeurs -secret_dep_reg_B1$A_sec<-case_when( - secret_dep_reg_B1$nb_promoteurs<3 ~ 1, #secret pour toutes les nb_promoteurs inférieurs à 3 - secret_dep_reg_B1$A_nb_inf3== 0 ~ 0, #enlève le secret si aucun des departements rang 1 et 2 inférieur à 3 - secret_dep_reg_B1$A_rang<3 ~ 1, #secret sur les 2 DEPARTEMENTS avec valeurs les plus basses - TRUE ~ 0) - - # secret induit, pour une meme categorie et un meme departement, pour ne pas retrouver la valeur d'une variable - # en faisant la somme des variables du departement -secret_dep1<-secret_dep_reg_B1 %>% - ungroup() %>% - group_by(categorie,TypeZone,CodeZone,date) %>% #groupe par categorie, zone et annee - mutate(B_nb_inf3=length(which(nb_promoteurs<3))) # compte le nombre de fois ou nb promoteurs <3 par groupe -secret_dep1$B_sec<-case_when( - secret_dep1$B_nb_inf3== 0 ~ 0, #enleve secret (affiche 0) si le nb de fois où groupe <3 est égal à 0 - TRUE ~ 1) #pour les autres, code 1 (secret) -# secret_dep1$C_sec<-case_when( -# secret_dep1$B_nb_inf3== 0 ~ 0, #enleve secret (affiche 0) si le nb de fois où groupe <3 est égal à 0 -# TRUE ~ 1) - -# masque le collectif pour un dep dont l'individuel a été masqué par le secret induit -secret_dep2 <- secret_dep1 %>% - mutate (somme_secrets = A_sec + B_sec) %>% - group_by(TypeZone,DEP,REG,categorie,date) %>% #pour chaque departement - mutate(a_secretiser=length(which(somme_secrets>0))) # secretise toutes les donnes groupees - - - - # regroupement des secrets, masquage des valeurs -secret_dep2<-secret_dep2 %>% - mutate(valeur=as.character(valeur)) -secret_dep2$valeur<-case_when( - is.na(secret_dep2$nb_promoteurs)~ "nc", - secret_dep2$a_secretiser > 0 ~ "nc", #remplace valeur par "nc" si secret stat - TRUE ~ secret_dep2$valeur) - -secret_dep2<-secret_dep2 %>% - ungroup() %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) - -# regroupement des zonages ------------ -secretise_ecln <-bind_rows(secret_communes,secret_epci,data_ecln_A,public_dep_reg_A,secret_dep2) - - -# remplace "nc" par NA -secretise_ecln$valeur<-na_if(secretise_ecln$valeur,"nc") - -secretise_ecln <- secretise_ecln %>% - mutate(valeur=as.numeric(valeur)) %>% - mutate_if(is.factor,as.character) %>% - pivot_wider(names_from = variable,values_from = valeur) - - -# versement dans le sgbd/datamart.portrait_territoires ------------- -poster_data(data = secretise_ecln, - db = "datamart", - schema = "portrait_territoires", - table = "secretise_ecln", - 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 = "cogifiee_ecln", - 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 = "secretise_ecln", - user = "does" -) - -## 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 == "secret_ecln") %>% - # 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" - ) - ) - -post_dico_attr( - dico = metadata_indicateur, - db = "datamart", - schema = "portrait_territoires", - table = "secretise_ecln", - user = "does" -) diff --git a/data-raw/secret_eptb.R b/data-raw/secret_eptb.R deleted file mode 100644 index 504083624b2b06f91ea13c0389bd6999f2a421d5..0000000000000000000000000000000000000000 --- a/data-raw/secret_eptb.R +++ /dev/null @@ -1,173 +0,0 @@ - -# secret_eptb - -# librairies ----------- -library(dplyr) -library(tidyr) -library(lubridate) -library(COGiter) -library(stringr) -library(DBI) -library(RPostgreSQL) -library(datalibaba) -library(googlesheets4) - -rm(list=ls()) - - -# chargement data ------------- - -cogifiee_eptb <- importer_data(db = "datamart", - schema = "portrait_territoires", - table = "cogifiee_eptb") - - -data_cogifiee<-pivot_longer(cogifiee_eptb, - cols = nombre_d_observations_non_pondere : surface_totale_des_maisons_en_m2, - names_to = "variable", - values_to = "valeur") - -# tranches_eptb <- read.csv2('metadata/secret_eptb.csv', as.is = TRUE, encoding = "UTF-8" ) - -## 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 -tranches_eptb <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277", - sheet = "secret_eptb") - - -# distinction des données à secrétiser --------- - -# table des variables nombre -data_nombres <- data_cogifiee %>% - filter ( str_detect(variable,"^nombre")==TRUE) - -#table des variables prix et surfaces -data_prix_surf <- data_cogifiee %>% - filter ( str_detect(variable,"^nombre")==FALSE) - -# secrétisation des données nombre - -# Communes -secret_communes<-data_nombres %>% - filter(TypeZone=="Communes")%>% - left_join(communes %>% rename("CodeZone"="DEPCOM")%>% select(CodeZone,EPCI)) #ajoute les noms d'epci - -#secret induit, pour une meme variable et un meme epci, pour ne pas retrouver la valeur d'une commune -#en faisant la somme des communes -secret_communes<-secret_communes %>% - group_by(variable,EPCI,date) %>% - mutate(A_nb_inf11=length(which(valeur<11)), #compte combien inférieur à 11 - A_rang=rank(valeur, ties.method = "first"), #classe pour repérer les 2 plus petites valeurs - valeur2 = valeur) - -secret_communes<-secret_communes %>% - mutate(valeur=as.character(valeur)) - -secret_communes$valeur<-case_when( - secret_communes$valeur2<11 ~ "nc", #secret pour toutes les nb_obs inférieurs à 11 - secret_communes$A_rang<3 ~ "nc", #secret sur les 2 communes avec valeurs les plus basses - TRUE ~ secret_communes$valeur) - -secret_communes<-secret_communes %>% - ungroup() %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) - -# autres zones (pas de secret induit calculé) -secret_grandes_zones<-data_nombres %>% - filter(TypeZone %in% c("Epci","Départements","Régions","France")) %>% - mutate(valeur2 = valeur,valeur=as.character(valeur)) -secret_grandes_zones$valeur <- case_when( - secret_grandes_zones$valeur2 < 11 ~ "nc", #secret sur les 2 communes avec valeurs les plus basses - TRUE ~ secret_grandes_zones$valeur) -secret_grandes_zones<- secret_grandes_zones %>% - ungroup() %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) - -# regroupement des zonages -data_nombres_secretise<-bind_rows(secret_communes,secret_grandes_zones) %>% - mutate(code_ident=paste(CodeZone,date,variable)) #création d'une colonne pour identifier zone, année et variable - - -# secrétisation des données prix et surface ---------- -data_prix_surf$variable_associe<- tranches_eptb$variable_associee[match(data_prix_surf$variable,tranches_eptb$variable)] - -data_prix_surf <- data_prix_surf %>% - mutate(code_ident=paste(CodeZone,date,variable_associe)) #création d'une colonne pour identifier zone, année et variable -data_prix_surf$valeur_associe <- data_nombres_secretise$valeur[match(data_prix_surf$code_ident,data_nombres_secretise$code_ident)] -data_prix_surf<-data_prix_surf %>% - mutate(valeur=as.character(valeur)) -data_prix_surf$valeur <- case_when( - data_prix_surf$valeur_associe=="nc" ~ "nc", #secretise si la valeur associee est secretisee - TRUE ~ data_prix_surf$valeur) -data_prix_surf<-data_prix_surf %>% - select(TypeZone,Zone,CodeZone,date,variable,valeur) - - -# regroupement des donnees ----------- -data_eptb<-bind_rows(data_nombres_secretise %>% select(-code_ident),data_prix_surf) - -data_eptb$valeur<-na_if(data_eptb$valeur,"nc") #remplace "nc" par NA - -data_cogifiee <- data_eptb %>% - mutate(valeur=as.numeric(valeur)) %>% - mutate_if(is.factor,as.character) - -secretise_eptb<-data_cogifiee %>% - pivot_wider(names_from = variable,values_from = valeur) - - -# versement dans le sgbd/datamart.portrait_territoires ------------- -poster_data(data = secretise_eptb, - db = "datamart", - schema = "portrait_territoires", - table = "secretise_eptb", - 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 = "cogifiee_eptb", - 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 = "secretise_eptb", - 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 = "secretise_eptb", - user = "does" -) diff --git a/metadata/Insee_RGP_lgt_lib_variable.ods b/metadata/Insee_RGP_lgt_lib_variable.ods index ed0a1dea969d3f7ebec4926b8e88bbae7c560b54..494e382482bc73609c124152e59a2502594266e5 100644 Binary files a/metadata/Insee_RGP_lgt_lib_variable.ods and b/metadata/Insee_RGP_lgt_lib_variable.ods differ diff --git a/metadata/Insee_RGP_pop_lib_variable.ods b/metadata/Insee_RGP_pop_lib_variable.ods index d32133f5e34df36f409d155c9234f25413998eb2..e74666e38bac88c48ab02e8468416b6f26b65ef7 100644 Binary files a/metadata/Insee_RGP_pop_lib_variable.ods and b/metadata/Insee_RGP_pop_lib_variable.ods differ