library(tidyverse)
# Repérer la racine sans imposer un chemin propre à un ordinateur.
racines <- c(".", "../..", "../../../..")
racine <- racines[file.exists(file.path(
racines, "modules/atelier-02-regression/data/performance_succursales_quebec.csv"
))][1]
stopifnot(!is.na(racine))
performance <- read_csv(file.path(racine,
"modules/atelier-02-regression/data/performance_succursales_quebec.csv"),
show_col_types = FALSE) |>
mutate(mois = as.Date(mois))
nombre_fr <- function(x, decimales = 2) {
formatC(x, format = "f", digits = decimales,
decimal.mark = ",", big.mark = " ")
}
glimpse(performance)Rows: 72
Columns: 14
$ mois <date> 2025-01-01, 2025-01-01, 2025-01-01, 2025-01-01,…
$ mois_label <chr> "janvier", "janvier", "janvier", "janvier", "jan…
$ saison <chr> "moyenne", "moyenne", "moyenne", "moyenne", "moy…
$ succursale <chr> "Gatineau", "Montréal", "Québec", "Saguenay", "S…
$ region <chr> "Outaouais", "Montréal", "Capitale-Nationale", "…
$ surface_m2 <dbl> 420, 560, 470, 350, 390, 365, 420, 560, 470, 350…
$ campagne_locale <chr> "oui", "oui", "non", "non", "oui", "non", "non",…
$ depenses_marketing <dbl> 5977, 6162, 4978, 2981, 5061, 3279, 4677, 4693, …
$ achalandage <dbl> 1653, 2043, 1864, 1202, 1362, 1369, 1486, 2179, …
$ heures_personnel <dbl> 483, 528, 499, 450, 476, 493, 498, 577, 495, 465…
$ ruptures_stock <dbl> 1, 1, 2, 1, 0, 1, 0, 1, 6, 3, 0, 2, 1, 0, 1, 2, …
$ delai_service_minutes <dbl> 5.5, 6.8, 3.8, 5.4, 3.8, 5.5, 5.0, 6.2, 6.5, 5.3…
$ satisfaction <dbl> 7.7, 8.0, 7.7, 7.4, 8.7, 8.4, 8.6, 8.3, 7.1, 7.6…
$ ventes <dbl> 163260, 180567, 166706, 126460, 151254, 132775, …
performance |>
summarise(lignes = n(), succursales = n_distinct(succursale),
mois = n_distinct(mois),
delais_manquants = sum(is.na(delai_service_minutes)),
scores_manquants = sum(is.na(satisfaction)))# A tibble: 1 × 5
lignes succursales mois delais_manquants scores_manquants
<int> <int> <int> <int> <int>
1 72 6 12 0 0
performance |> count(mois, succursale) |> filter(n > 1)# A tibble: 0 × 3
# ℹ 3 variables: mois <date>, succursale <chr>, n <int>
# Conserver les mêmes lignes pour le graphique et le modèle.
analyse <- performance |>
drop_na(delai_service_minutes, satisfaction)
range(analyse$delai_service_minutes)[1] 3.6 8.7