Exercice · Débutant
Le regroupement qui traîne
Quatre chaînes dplyr, chacune renvoyant un chiffre plausible qui répond à une autre question que celle posée. Trouvez le regroupement résiduel, dites ce que chacune calcule réellement, et réécrivez-la.
Aucune de ces chaînes ne lève d’erreur. Chacune renvoie un tableau aux bons noms de colonnes et à des chiffres d’ordre de grandeur plausible. Trois d’entre elles répondent à une autre question que celle du commentaire au-dessus.
Le fichier
muac-screening-artibonite-2024.v1.csv — 4 218 enregistrements de dépistage de
douze communes de l’Artibonite, en Haïti. Synthétique, et de la même forme que le
fichier réel.
Les chaînes
# 1. Quelle part des depistages du district chaque commune-mois a-t-elle fournie ?
muac |>
group_by(commune, month) |>
summarise(n = n()) |>
mutate(share = n / sum(n))
# 2. Les cinq commune-mois aux plus nombreux depistages, a l'echelle du district.
muac |>
group_by(commune, month) |>
summarise(n = n()) |>
slice_max(n, n = 5)
# 3. Le PB moyen du district.
muac |>
group_by(commune) |>
summarise(mean_muac = mean(muac_mm))
# 4. Combien d'enfants ont ete depistes dans chaque commune, y compris ceux dont
# la commune n'a pas ete saisie ?
muac |>
filter(!is.na(commune)) |>
count(commune)
La tâche
Pour chaque chaîne :
- Dites ce qu’elle calcule réellement, en une phrase. Soyez précis — « la part au sein de quelque chose » n’est pas une réponse ; nommez ce quelque chose.
- Montrez la preuve.
dplyr::group_vars()etclass()sur le résultat intermédiaire trancheront trois cas sur quatre sans qu’il faille raisonner. - Réécrivez-la pour qu’elle réponde à la question du commentaire.
Les questions à traiter en prose
Trois phrases chacune.
1. Deux de ces défauts ont la même cause. Nommez-la, et expliquez pourquoi le
message de summarise() passe facilement inaperçu dans un script qui produit
vingt tableaux.
2. La chaîne 3 renvoie NA pour au moins une commune. Expliquez pourquoi R
agit ainsi plutôt que d’ignorer les valeurs manquantes, et dites ce que
na.rm = TRUE ferait au dénominateur — pas seulement au numérateur.
3. Le filtre de la chaîne 4 semble répondre à la question et fait l’inverse. Que conclurait un lecteur du tableau obtenu quant au nombre d’enfants dépistés, et quelle est la plus petite modification qui corrige cela ?
Ce qu’il faut rendre
Un seul script R qui s’exécute de haut en bas et affiche, pour chaque chaîne, le résultat d’origine, le diagnostic et le résultat corrigé.
Comment savoir que c’est terminé
Chaque chaîne corrigée emploie soit .groups = "drop", soit .by =, et aucune
ne repose sur un regroupement qui survit à l’appel. Si votre script contient un
chemin commençant par /Users ou C:, ou un setwd(), ce n’est pas terminé —
voir la leçon 1.