Exercices de consolidation

ImportantDossier de travail du module

Télécharger le dossier prêt à ouvrir (.zip)

Décompressez le fichier, puis ouvrez le projet .Rproj. Les chemins utilisés dans les exercices fonctionneront sans déplacer les données.

Ces exercices servent à consolider les premiers gestes du cours: utiliser RStudio, écrire du code dans un script, créer un rapport Quarto, charger des packages, inspecter des données et produire une petite analyse reproductible.

Ils sont indépendants de l’aventure et du défi. Certaines questions utilisent MeteoQuebec parce que c’est le premier tableau du cours, mais elles ne constituent pas une étape à remettre dans le défi.

Travaillez dans un fichier .R, un fichier .qmd, ou les deux. Les réponses sont repliées pour vous permettre d’essayer avant de comparer.

Exercice 1 - Console ou script?

Dans RStudio, exécutez 3 + 4 dans la console, puis dans un script .R.

Expliquez en une phrase pourquoi le script est préférable pour un travail qui doit être remis.

La console est utile pour tester rapidement une commande. Le script garde une trace du code, ce qui permet de relancer et de vérifier le travail plus tard.

Exercice 2 - Créer des objets

Créez les objets suivants:

  • ville contenant "Quebec";
  • temperatures contenant les valeurs 4, 7, NA, 10;
  • temperature_moyenne contenant la moyenne de temperatures en ignorant la valeur manquante.
ville <- "Quebec"
temperatures <- c(4, 7, NA, 10)
temperature_moyenne <- mean(temperatures, na.rm = TRUE)

temperature_moyenne

Exercice 3 - Comprendre une valeur manquante

Que retourne le code suivant? Expliquez pourquoi.

mean(c(4, 7, NA, 10))

Le résultat est NA, car R ne peut pas calculer la moyenne sans savoir quoi faire avec la valeur manquante. Il faut préciser na.rm = TRUE pour l’ignorer.

Exercice 4 - Écrire une condition

Créez un objet temperature <- -8, puis écrivez une condition qui affiche:

  • "gel" si la température est inférieure à 0;
  • "pas de gel" sinon.
temperature <- -8

if (temperature < 0) {
  "gel"
} else {
  "pas de gel"
}

Exercice 5 - Écrire une fonction simple

Créez une fonction etendue_temperature() qui reçoit deux arguments, minimum et maximum, puis retourne la différence entre les deux.

Testez la fonction avec minimum = -3 et maximum = 8.

etendue_temperature <- function(minimum, maximum) {
  maximum - minimum
}

etendue_temperature(minimum = -3, maximum = 8)

Exercice 6 - Trouver de l’aide

Utilisez l’aide intégrée de R pour consulter la documentation de mean().

Ensuite, répondez en une phrase: à quoi sert l’argument na.rm?

?mean

L’argument na.rm indique si les valeurs manquantes doivent être retirées avant le calcul.

Exercice 7 - Réécrire du code avec style

Réécrivez le code suivant pour respecter un style plus lisible.

x=mean(c(3,NA,5),na.rm=TRUE)
x <- mean(c(3, NA, 5), na.rm = TRUE)

Exercice 8 - Créer un premier rapport Quarto

Créez un fichier rapport.qmd contenant:

  • un titre;
  • le format HTML;
  • une courte phrase d’introduction;
  • un bloc de code qui calcule la moyenne de c(1, 2, 3, 4, 5).
---
title: "Premier rapport"
format: html
---

Ce rapport présente un premier calcul reproductible.

Dans un bloc de code R du document:

mean(c(1, 2, 3, 4, 5))

Exercice 9 - Charger les packages du module

Dans un script ou un document Quarto, chargez les packages nécessaires pour accéder aux données MeteoQuebec et manipuler des tableaux avec dplyr.

library(UlavalSSD)
library(dplyr)

Le chargement doit se trouver dans le document ou le script, pas seulement dans la console.

Exercice 10 - Inspecter MeteoQuebec

Après avoir chargé UlavalSSD, utilisez trois fonctions différentes pour inspecter MeteoQuebec.

Votre objectif est de comprendre les noms de variables, les premières lignes et la présence possible de valeurs manquantes.

library(UlavalSSD)

names(MeteoQuebec)
head(MeteoQuebec)
summary(MeteoQuebec)

Exercice 11 - Repérer les valeurs manquantes

Utilisez summary() pour identifier au moins une variable de MeteoQuebec qui contient des valeurs manquantes.

Rédigez ensuite une phrase qui explique pourquoi cette information est importante avant de faire une analyse.

library(UlavalSSD)

summary(MeteoQuebec)

Une phrase possible:

Certaines variables contiennent des valeurs manquantes. Je dois en tenir compte avant de calculer une moyenne ou de comparer des années, sinon l’analyse peut devenir incomplète ou produire NA.

Exercice 12 - Extraire des colonnes

Extrayez la colonne mean_temp de MeteoQuebec de deux façons:

  1. avec l’opérateur $;
  2. avec des crochets.
library(UlavalSSD)

temperature_1 <- MeteoQuebec$mean_temp
temperature_2 <- MeteoQuebec[, "mean_temp"]

Exercice 13 - Filtrer une date

Choisissez une date symbolique en définissant:

mois_choisi <- "06"
jour_choisi <- "24"

Filtrez MeteoQuebec pour garder seulement les observations de ce mois et de ce jour.

library(UlavalSSD)
library(dplyr)

mois_choisi <- "06"
jour_choisi <- "24"

meteo_date <- MeteoQuebec |>
  filter(month == mois_choisi, day == jour_choisi)

meteo_date

Exercice 14 - Ajouter une colonne

Créez une colonne etendue_temp qui calcule la différence entre la température maximale et la température minimale.

library(UlavalSSD)
library(dplyr)

meteo_avec_etendue <- MeteoQuebec |>
  mutate(etendue_temp = max_temp - min_temp)

head(meteo_avec_etendue)

Études de cas

Les deux études de cas suivantes utilisent des extraits de données ouvertes québécoises. Les fichiers ont été préparés pour conserver des colonnes simples et une taille adaptée à ce premier module. Leur provenance, leur licence et leurs limites sont documentées dans module_01/data/README.md.

Étude de cas 1 - Bibliothèques publiques du Québec

Fichier: data/bibliotheques_publiques_quebec_2024.csv

Vous aidez une équipe à préparer un aperçu des bibliothèques publiques du Québec. Chaque ligne représente une bibliothèque publique ou un centre régional en 2024. Les données proviennent de la Bibliothèque et Archives nationales du Québec.

Réalisez les tâches suivantes:

  1. Importez le fichier avec readr::read_csv().
  2. Affichez les noms de colonnes et les premières lignes.
  3. Identifiez les variables qui contiennent des valeurs manquantes.
  4. Calculez la moyenne de visites en ignorant les valeurs manquantes.
  5. Gardez seulement les lignes où activites est supérieur ou égal à 500.
  6. Rédigez deux phrases descriptives qui résument ce que vous avez observé, en tenant compte des valeurs manquantes.
library(readr)
library(dplyr)

bibliotheques <- read_csv("data/bibliotheques_publiques_quebec_2024.csv")

names(bibliotheques)
head(bibliotheques)
summary(bibliotheques)

mean(bibliotheques$visites, na.rm = TRUE)

bibliotheques_actives <- bibliotheques |>
  filter(activites >= 500)

bibliotheques_actives

Étude de cas 2 - Fréquentation du portail de données ouvertes de Montréal

Fichier: data/frequentation_portail_montreal_2023.csv

Vous préparez un mini-rapport sur la fréquentation du portail de données ouvertes de Montréal. Chaque ligne représente une page consultée le 21 juin 2023. Les données proviennent de la Ville de Montréal.

Réalisez les tâches suivantes:

  1. Importez le fichier.
  2. Créez une colonne pages_par_session avec la formule pageviews / sessions.
  3. Calculez le nombre total de sessions.
  4. Gardez les lignes où sessions est supérieur ou égal à 20.
  5. Identifiez une page qui pourrait être mise en valeur dans le portail.
  6. Créez un court rapport Quarto qui présente le code et deux phrases d’interprétation descriptive.
library(readr)
library(dplyr)

portail <- read_csv("data/frequentation_portail_montreal_2023.csv")

portail_mesures <- portail |>
  mutate(pages_par_session = pageviews / sessions)

sum(portail_mesures$sessions, na.rm = TRUE)

pages_a_mettre_en_valeur <- portail_mesures |>
  filter(sessions >= 20)

pages_a_mettre_en_valeur
GPT STT-1100