Skip to content
Snippets Groups Projects
Commit 108cc62b authored by ronan.vignard's avatar ronan.vignard
Browse files

Merge branch 'dev' into 'master'

Correction d'un bug + création des tests pour fix_encoding_variable()

See merge request !65
parents 24c91681 c834d9f5
No related branches found
No related tags found
1 merge request!65Correction d'un bug + création des tests pour fix_encoding_variable()
Pipeline #537663 passed
#' Corrige l'encodage pour une variable spécifiée dans un dataframe #' Corrige l'encodage pour une variable spécifiée dans un dataframe
#' #'
#' @description Cette fonction corrige l'encodage des caractères d'une variable #' @description Cette fonction corrige l'encodage des caractères d'une variable
#' spécifiée dans un dataframe de ISO-8859-1 à UTF-8. #' spécifiée dans un dataframe de ISO-8859-1 à UTF-8.
#' #'
#' @param data Un dataframe contenant les données. #' @param data Un dataframe contenant les données.
#' @param variable Une chaîne de caractères spécifiant le nom de la #' @param variable Une chaîne de caractères spécifiant le nom de la
#' variable (colonne) dont l'encodage doit être corrigé. #' variable (colonne) dont l'encodage doit être corrigé.
#' #'
#' @return Un dataframe avec l'encodage de la variable spécifiée corrigé en #' @return Un dataframe avec l'encodage de la variable spécifiée corrigé en
#' UTF-8. #' UTF-8.
#' #'
#' @importFrom dplyr mutate #' @importFrom dplyr mutate
#' #'
#' @export #' @export
#' @examples #' @examples
#' \dontrun{ #' \dontrun{
#' # Utilisation de la fonction fix_encoding_variable() #' # Utilisation de la fonction fix_encoding_variable()
#' nitrate_analyse_esu_2023 <- fix_encoding_variable(nitrate_analyse_esu_2023, #' data_test <- data.frame(id = 1:3,
#' "libelle_station") #' libelle = c("Établissement A", "Forêt B", "Île C"),
#' #' stringsAsFactors = FALSE)
#' # Vérification de l'encodage corrigé #' # Simuler un encodage ISO-8859-1
#' head(nitrate_analyse_esu_2023$libelle_station) #'data_test$libelle <- iconv(data_test$libelle, from = "UTF-8", to = "ISO-8859-1")
#' # Correction de l'encodage
#' data_test_corrige <- fix_encoding_variable(data_test, "libelle")
#' } #' }
fix_encoding_variable <- function(data, variable) { fix_encoding_variable <- function(data, variable) {
# Vérifier si la variable existe dans le dataframe # Vérifier si la variable existe dans le dataframe
...@@ -31,6 +33,7 @@ fix_encoding_variable <- function(data, variable) { ...@@ -31,6 +33,7 @@ fix_encoding_variable <- function(data, variable) {
# Utiliser mutate pour corriger l'encodage de la variable spécifiée # Utiliser mutate pour corriger l'encodage de la variable spécifiée
data |> data |>
dplyr::mutate(variable = iconv(variable, from = "ISO-8859-1", to = "UTF-8")) dplyr::mutate(!!variable := iconv(.data[[variable]],
from = "ISO-8859-1", to = "UTF-8"))
} }
...@@ -80,6 +80,7 @@ usethis::use_r("close_all_connections") ...@@ -80,6 +80,7 @@ usethis::use_r("close_all_connections")
usethis::use_r("create_dummy") usethis::use_r("create_dummy")
usethis::use_r("create_schema") usethis::use_r("create_schema")
usethis::use_r("download_and_extract_wfs") usethis::use_r("download_and_extract_wfs")
usethis::use_r("fix_encoding_variable")
usethis::use_r("format_colnames") usethis::use_r("format_colnames")
usethis::use_r("format_filepath") usethis::use_r("format_filepath")
usethis::use_r("get_variable_completion_rate") usethis::use_r("get_variable_completion_rate")
...@@ -104,6 +105,7 @@ usethis::use_test("close_all_connections") ...@@ -104,6 +105,7 @@ usethis::use_test("close_all_connections")
usethis::use_test("create_dummy") usethis::use_test("create_dummy")
usethis::use_test("create_schema") usethis::use_test("create_schema")
usethis::use_test("download_and_extract_wfs") usethis::use_test("download_and_extract_wfs")
usethis::use_test("fix_encoding_variable")
usethis::use_test("format_colnames") usethis::use_test("format_colnames")
usethis::use_test("format_filepath") usethis::use_test("format_filepath")
usethis::use_test("get_variable_completion_rate") usethis::use_test("get_variable_completion_rate")
......
...@@ -23,10 +23,12 @@ spécifiée dans un dataframe de ISO-8859-1 à UTF-8. ...@@ -23,10 +23,12 @@ spécifiée dans un dataframe de ISO-8859-1 à UTF-8.
\examples{ \examples{
\dontrun{ \dontrun{
# Utilisation de la fonction fix_encoding_variable() # Utilisation de la fonction fix_encoding_variable()
nitrate_analyse_esu_2023 <- fix_encoding_variable(nitrate_analyse_esu_2023, data_test <- data.frame(id = 1:3,
"libelle_station") libelle = c("Établissement A", "Forêt B", "Île C"),
stringsAsFactors = FALSE)
# Vérification de l'encodage corrigé # Simuler un encodage ISO-8859-1
head(nitrate_analyse_esu_2023$libelle_station) data_test$libelle <- iconv(data_test$libelle, from = "UTF-8", to = "ISO-8859-1")
# Correction de l'encodage
data_test_corrige <- fix_encoding_variable(data_test, "libelle")
} }
} }
test_that("fix_encoding_variable works", {
# Création d'un dataframe d'exemple avec encodage ISO-8859-1
data_test <- data.frame(
id = 1:3,
libelle = c("Établissement A", "Forêt B", "Île C"),
stringsAsFactors = FALSE
)
# Simuler un encodage ISO-8859-1
data_test$libelle <- iconv(data_test$libelle, from = "UTF-8", to = "ISO-8859-1")
# Vérification avant correction
# expect_true(all(Encoding(data_test$libelle) == "latin1"))
# Application de la correction
data_test_corrige <- fix_encoding_variable(data_test, "libelle")
# Vérification après correction
expect_true(all(Encoding(data_test_corrige$libelle) == "UTF-8"))
# Vérification du contenu inchangé
expect_equal(data_test_corrige$libelle, c("Établissement A", "Forêt B", "Île C"))
})
test_that("fix_encoding_variable fails", {
data_test <- data.frame(id = 1:3, nom = c("A", "B", "C"))
# Vérifie que la fonction renvoie une erreur
expect_error(fix_encoding_variable(data_test, "libelle"),
"La variable libelle n'existe pas dans le dataframe.")
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment