brut <- read_csv2(
fichier_brut, trim_ws = FALSE,
col_types = cols(
date_texte = col_character(),
ville = col_character(),
.default = col_double()
)
)
glimpse(brut)Importer, nettoyer et vérifier des données en R
Aurélien Nicosia · 23 septembre 2026
STT-4230 / STT-6230
| Code | Ce qu’il fait |
|---|---|
meteo |
Le tableau de départ |
filter() |
Garder les lignes de Lévis |
select() |
Garder deux colonnes |
arrange() |
Trier les lignes par date |
Ici, |> passe le tableau à la fonction suivante comme premier argument.
Chaque étape utilise le résultat de la précédente.
Un fichier utilise ; entre les colonnes et , pour les décimales.
Quelle fonction utiliser pour le lire ?
readr::read_csv2() est conçu pour ce format.
Mesures météo fictives à Québec et à Lévis. Températures en °C, pluie en mm.
| Date | Station | Min. | Max. | Pluie |
|---|---|---|---|---|
| 01/09/2026 | ” québec ” | 8,2 | 18,5 | 1,5 |
| 02/09/2026 | “QUÉBEC” | 9,0 | 19,0 | -2,0 |
| 03/09/2026 | “Québec” | NA | 17,0 | NA |
| 01/09/2026 | “Lévis” | 7,0 | 18,0 | 0,0 |
| 02/09/2026 | ” LÉVIS” | 8,0 | 20,0 | 4,0 |
| 03/09/2026 | “Lévis” | 6,0 | 16,5 | 8,0 |
| 01/09/2026 | “Lévis” | 7,0 | 18,0 | 0,0 |
Que faut-il corriger avant de faire des calculs ?
Regardez les noms des villes, les dates, la pluie négative et la ligne répétée.
glimpse(brut) montre :
Les trois mesures sont déjà numériques.
Les dates sont encore du texte : il faudra les convertir.
| Fonction | Ce qu’elle change |
|---|---|
rename(nouveau = ancien) |
Les noms des colonnes |
select() |
Les colonnes conservées et leur ordre |
starts_with("temp_") |
Sélectionne les noms qui commencent par temp_ |
Les sept lignes sont conservées.
str_squish() enlève les espaces superflus.
str_to_title() transforme ici « QUÉBEC » en « Québec ».
dmy() lit une date écrite dans l’ordre jour, mois, année.
relocate() déplace la colonne date au début du tableau.
« québec », « QUÉBEC » et « Québec » deviennent « Québec ».
La colonne date est maintenant de type Date.
| Date | Station | Min. °C | Max. °C | Amplitude °C |
|---|---|---|---|---|
| 2026-09-01 | Québec | 8.2 | 18.5 | 10.3 |
| 2026-09-02 | Québec | 9.0 | 19.0 | 10.0 |
| 2026-09-03 | Québec | NA | 17.0 | NA |
L’amplitude est calculée ligne par ligne.
Si une des deux températures manque, l’amplitude reste manquante.
if_else() remplace les pluies négatives par NA.
case_when() classe chaque valeur : manquante, nulle ou positive.
Sur les sept lignes de départ :
| Étape | Négatives | Manquantes |
|---|---|---|
| Avant | 1 | 1 |
| Après | 0 | 2 |
La pluie négative devient NA : on passe de 1 à 2 valeurs manquantes.
On ne la remplace pas par zéro, car on ne sait pas s’il a plu.
Cette station apparaît deux fois à la même date :
| station | date | n |
|---|---|---|
| Lévis | 2026-09-01 | 2 |
Ici, les deux lignes sont identiques.distinct() ramène la table à six lignes.
Si les deux lignes contenaient des mesures différentes,
il faudrait comprendre pourquoi avant d’en supprimer une.
Les conditions séparées par une virgule doivent toutes être vraies.desc() trie les valeurs de la plus grande à la plus petite.
filter() garde seulement les lignes pour lesquelles la condition vaut TRUE.
Une ligne dont la condition vaut NA est donc retirée.
| Station | Mesures | Moy. mm |
|---|---|---|
| Lévis | 3 | 4.0 |
| Québec | 1 | 1.5 |
na.rm = TRUE exclut les valeurs manquantes du calcul de la moyenne.
n() compte les lignes; sum(!is.na(...)) compte les mesures observées.
À Québec, la moyenne repose sur une seule mesure de pluie.
group_by() définit les groupes; summarise() produit les résumés..groups = "drop" retire le regroupement du résultat.
| temp_min_c | temp_max_c | precip_mm |
|---|---|---|
| 1 | 0 | 2 |
across() répète le calcul pour chaque colonne choisie.
Ici, .x désigne la colonne et sum(is.na(.x)) compte ses valeurs manquantes.
La table stations :
| station | rive |
|---|---|
| Québec | nord |
| Lévis | sud |
La jointure ajoute la rive en associant les noms de stations.
Avec many-to-one, R s’arrête si une station correspond à plusieurs lignes de stations.
Une station absente de stations aura une rive manquante. Il faut aussi vérifier ce cas.
Québec, le 1er septembre :
| Mesure | Température °C |
|---|---|
| temp_min_c | 8.2 |
| temp_max_c | 18.5 |
Les colonnes date et station sont répétées pour les deux mesures.
Chaque température occupe maintenant une ligne.mesure indique s’il s’agit du minimum ou du maximum; temp_c contient la valeur.
Calculons la pluie moyenne pour chaque station, en excluant les valeurs manquantes.
| Station | Mesures | Moy. mm |
|---|---|---|
| Lévis | 3 | 4.0 |
| Québec | 1 | 1.5 |
.by = station fait le calcul séparément pour chaque station.
Ce regroupement s’applique seulement à cet appel de summarise().
Attention : la moyenne de Québec repose sur un seul jour, celle de Lévis sur trois jours.
PLT-3928 · Travail individuel · 60 minutes · 10 % de la note finale
| Heure | Déroulement |
|---|---|
| 13 h 30 à 14 h 30 | Travail individuel sur un poste Windows, sans Internet. |
| À 14 h 30 | Vous enregistrez vos fichiers et vous arrêtez de travailler. |
| 14 h 30 à 14 h 45 | Je récupère vos dossiers de travail. |
| Ensuite | Introduction aux graphiques sur un autre exemple. |
Pas de mini-test la semaine du 30 septembre.
R/defi1.R.data/processed/ : les données nettoyées et le résumé.Le README explique comment exécuter le script, vos choix de nettoyage et une limite.
La consigne complète et les données seront fournies au début du défi.
defi-1, avec le fichier brut.Vous n’avez rien à envoyer : je récupère les fichiers sur votre compte.
Vous n’avez pas à utiliser Git ni à créer une archive ZIP.
Si vous avez un problème pour enregistrer vos fichiers, prévenez-moi tout de suite.
| Critère | Points |
|---|---|
| Exactitude technique | 4 |
| Reproductibilité | 2 |
| Qualité du code | 2 |
| Documentation et remise | 1 |
| Validation et explication | 1 |
| Total | 10 |
Le travail et le barème sont les mêmes pour STT-4230 et STT-6230.
Vous devez expliquer au moins un de vos choix de nettoyage dans le README.
Vous pouvez utiliser R de base ou les packages vus en classe.
Vous n’avez pas à produire de graphique ou de rapport Quarto, ni à écrire vos propres fonctions.
Pour le portfolio, conservez votre exemple de cette semaine dans semaines/semaine-04/, avec quelques lignes pour expliquer ce que vous avez fait et vérifié.
Sur le site du cours :
Le script demonstration-semaine-04.R reproduit tous les exemples et vérifie les résultats.
R 4.1 ou plus; dplyr 1.1.1 ou plus; readr, tidyr, stringr, lubridate et tibble.
STT-4230 / STT-6230 · 23 septembre 2026