diff --git a/dev/flat_insert_data_ars.Rmd b/dev/flat_insert_data_ars.Rmd new file mode 100644 index 0000000000000000000000000000000000000000..02ff6038dba0577e3176118be7e15563e5d547d5 --- /dev/null +++ b/dev/flat_insert_data_ars.Rmd @@ -0,0 +1,162 @@ +--- +title: "Insertion des pr\u00e9l\u00e8vements et analyses ARS ARS" +output: html_document +editor_options: + chunk_output_type: console +--- + +```{r development, include=FALSE} +library(testthat) +library(yaml) +library(datalibaba) +library(dplyr) +library(stringr) +library(glue) +library(DBI) +library(RPostgres) + +``` + +```{r development-load} +# Load already included functions if relevant +pkgload::load_all(export_all = FALSE) + +``` + +```{r config, eval=FALSE} +# Lire le fichier de configuration +config <- yaml::read_yaml("config.yml") + +# Accéder à la valeur pour version +version <- config$version + +``` + +# Consolidation et insertion des données de l'ARS dans la table des prélèvements + +## Chargement des données ARS brutes et des stations ESO + +La table des données brutes Nitrates de l'ARS est chargée : +```{r load_nitrate_data_analyse_ars, eval=FALSE} +nitrate_data_analyse_ars <- datalibaba::importer_data( + table = "nitrate_data_analyse_ars", + schema = "nitrates", + db = "si_eau", + user = "admin" +) + +``` + +La table des stations est chargée afin de remplacer ultérieurement le code SISE-EAUX par le code BSS pour les prélèvements ESO : +```{r load-nitrate_station_eso, eval=FALSE} +r_station_mesure_p_2024_r52 <- datalibaba::importer_data( + table = "r_station_mesure_p_2024_r52", + schema = "stations", + db = "si_eau", + user = "admin" +) + +``` + +## Consolidation des données ARS + +On ajoute les variables `source` et `code_support` : +```{r add_source_code_support, eval=FALSE} +# Ajouter les variables source et code_support +nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> + dplyr::mutate( + source = "ARS", + code_support = 3 + ) +``` + +On remplace "h" par ":" dans la variable `plv_heure` : +```{r replace_in_plv_heure, eval=FALSE} +# Remplacer "h" par ":" dans la colonne plv_heure +nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> + dplyr::mutate(plv_heure = stringr::str_replace_all(plv_heure, "h", ":")) +``` + +On supprime les enregistrements correspondants à des totaux : +```{r filter_param_nom_ars, eval=FALSE} +# Supprimer les lignes ne correspondant pas à une analyse +nitrate_analyse_ars <- nitrate_data_analyse_ars |> + dplyr::filter(!stringr::str_starts(param_nom, "Total")) + +``` + +On remplace les chaînes de caractère par NA dans la variable `ana_param_alpha_resultat` : +```{r replace_strings_with_na, eval=FALSE} +# Remplacer chaînes de caractère dans la colonne ana_param_alpha_resultat +nitrate_analyse_ars <- nitrate_analyse_ars |> + dplyr::mutate( + ana_param_alpha_resultat = dplyr::case_when( + ana_param_alpha_resultat %in% c("TRACES", "PRESENCE", "SEUIL", "ILLISIBL", "N.M.", "O", "?", ",", " ") ~ NA_character_, + TRUE ~ ana_param_alpha_resultat + ) + ) + +``` + +On remplace des valeurs dans ana_param_alpha_resultat et param_code: +```{r replace_dot_ana_param_alpha_resultat, eval=FALSE} +# Remplacer les valeurs dans les colonnes ana_param_alpha_resultat et param_code +nitrate_analyse_ars <- nitrate_analyse_ars |> + dplyr::mutate( + ana_param_alpha_resultat = stringr::str_replace(ana_param_alpha_resultat, "\\,", "."), + param_code = stringr::str_replace(param_code, "NO3", "1340") + ) + +``` + +On affecte le code_remarque et la valeur des variables resultat_analyse et limite_quantification : +```{r mutate_from_ana_param_alpha_resultat, eval=FALSE} +# Ajouter les colonnes code_remarque, resultat_analyse et limite_quantification +nitrate_analyse_ars <- nitrate_analyse_ars |> + dplyr::mutate( + # Ajout de la colonne code_remarque selon la condition spécifiée + code_remarque = dplyr::case_when( + stringr::str_starts(ana_param_alpha_resultat, "<") ~ 10, + TRUE ~ 1 + ), + # Renommage conditionnel des colonnes + resultat_analyse = dplyr::case_when( + stringr::str_starts(ana_param_alpha_resultatdev, "<") ~ as.character(ana_param_valeur_traduite), + TRUE ~ ana_param_alpha_resultat + ), + limite_quantification = dplyr::case_when( + stringr::str_starts(ana_param_alpha_resultat, "<") ~ ana_param_alpha_resultat, + TRUE ~ NA_character_ # Utilisation de NA pour les valeurs non pertinentes + ) + ) + +``` + +On sélectionne les champs utiles à la table des prélèvements et analyse : +```{r select_variables, eval=FALSE} +# Sélectionner les variables +nitrate_data_analyse_ars <- nitrate_data_analyse_ars |> + dplyr::select(code_intervenant = geo_dept_ddass_gest_code, + source, + code_station = ins_code_national, + date_prelevement = plv_date, + heure_prelevement = plv_heure, + code_support, + nature_eau, + id_usage = usage, + id_prelevement_motif = plv_motif, + nom_parametre = param_nom, + date_analyse = anl_date_fin_analyse, + resultat_analyse, + code_parametre = param_code, + code_remarque, + limite_quantification) + +``` + +```{r development-inflate, eval=FALSE} +# Run but keep eval=FALSE to avoid infinite loop +# Execute in the console directly +fusen::inflate(flat_file = "dev/flat_insert_data_ars.Rmd", vignette_name = "Go further") +``` +