Skip to content

Commit 2bccf6b

Browse files
committed
Revised learnrs for modules 5 & 6
1 parent 5578722 commit 2bccf6b

File tree

7 files changed

+148
-136
lines changed

7 files changed

+148
-136
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: BioDataScience1
2-
Version: 2022.2.1
2+
Version: 2022.3.0
33
Title: A Series of Learnr Documents for Biological Data Science 1
44
Description: Interactive documents using learnr and shiny applications for studying biological data science.
55
Authors@R: c(

NEWS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# BioDataScience1 2022.3.0
2+
3+
- **A05La_wrangling**, **A06La_recombination** and **A06Lb_multi-table** revised. **A05La_syntaxr** renamed **A11Lc_syntaxr**.
4+
15
# BioDataScience1 2022.2.1
26

37
- **A03La_univariate**, **A04La_barplot**, **A04Lb_barplot** and **A04Lc_comp_fig** are revised (no changes in the exercices themselve).

inst/tutorials/A04Lc_comp_fig/A04Lc_comp_fig.Rmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ chart(marphy, Temperature ~ Station) +
6363
labs(y = "Température [°C]")
6464
```
6565

66-
Utilisez les données du jeu de données `marphy` pour reproduire le graphique ci-dessus représentant la température (`Temperature`) en fonction des stations échantillonnées (`Station`). Vous aurez besoin des fonction `geom_point()` et `geom_line()` pour réaliser ce graphique. Renommez également l'axe des ordonnées ("Température []").
66+
Utilisez les données du jeu de données `marphy` pour reproduire le graphique ci-dessus représentant la température (`Temperature`) en fonction des stations échantillonnées (`Station`). Vous aurez besoin des fonctions `geom_line()` et `geom_point()` *dans cet ordre* pour réaliser ce graphique. Renommez également l'axe des ordonnées ("Température [°C]") à l'aide de la fonction `labs()`.
6767

6868
```{r line1_h3, exercise=TRUE}
6969
chart(___, ___ ~ ___) +

inst/tutorials/A05La_wrangling/A05La_wrangling.Rmd

Lines changed: 72 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Remaniement de données"
33
author: "Guyliann Engels & Philippe Grosjean"
4-
description: "**SDD I Module 5** Importer et remanier des données dans R."
4+
description: "**SDD I Module 5** Remanier des données dans R."
55
tutorial:
66
id: "A05La_wrangling"
77
version: 2.1.0/3
@@ -32,45 +32,39 @@ BioDataScience1::learnr_server(input, output, session)
3232

3333
------------------------------------------------------------------------
3434

35-
**Ce tutoriel correspond à la version 2021-2022. Il est en cours de révision pour la version 2022-2023. Vous devez probablement penser à installer une version plus récente du package qui contient les exercices finalisés !**
36-
3735
## Objectifs
3836

39-
- Vérifier l'acquisition des notions relatives aux remaniement des données avec les fonctions `select()`/`fselect()`, `filter()`/`fsubset()`, `mutate()`/`fmutate()`, `group_by()`/`fgroup_by()`, `summarise()`/`fsummarise()`
37+
- Vérifier la compréhension des fonctions servant au remaniement des données avec les fonctions `select()`/`sselect()`, `filter()`/`sfilter()`, `mutate()`/`smutate()`, `group_by()`/`sgroup_by()`, `summarise()`/`ssummarise()`
4038
- Vérifier l'acquisition des compétences relatives au chaînage des instructions
4139

4240
## Calculer de nouvelles variables
4341

44-
Le remaniement des données est indispensable lors d'une analyse de données. Pour vérifier l'acquisition de ces compétences, le jeu de données sur la biométrie des crabes est employée.
42+
Le remaniement des données est indispensable lors d'une analyse. Pour vérifier l'acquisition de ces compétences, le jeu de données sur la mesure de deux espèces de crabes est employé.
4543

4644
```{r}
4745
SciViews::R
48-
# Importation des données sur la biométrie des crabes
46+
# Importation des données crabs
4947
(crabs <- read("crabs", package = "MASS", lang = "fr"))
5048
```
5149

52-
A partir du jeu de données `crabs`, calculez à l'aide de la fonction `fmutate()` :
50+
À partir du jeu de données `crabs`, calculez à l'aide de la fonction speedy `smutate()` :
5351

5452
- le logarithme (`log()`) de la longueur de la carapace (`length`) des crabes et nommez cette nouvelle variables **length_log**
5553
- la racine carrée (`sqrt()`) de la largueur de la carapace (`width`) et nommez cette nouvelle variable **width_sqrt**
5654
- Divisez la variable lobe frontal (`front`) par 1000 et nommez cette nouvelle variable **front_m**
5755

58-
Affichez ensuite les premières lignes du tableau (`head()`). Par défaut, les 6 premières lignes sont affichées)
59-
60-
Vous devez obtenir le tableau ci-dessous :
56+
Affichez ensuite les premières lignes du tableau (`head()`). Par défaut, les 6 premières lignes sont affichées). Vous devez obtenir le tableau ci-dessous :
6157

6258
```{r}
63-
# fmutate
64-
crabs <- fmutate(crabs,
59+
crabs <- smutate(crabs,
6560
length_log = log(length),
6661
width_sqrt = sqrt(width),
67-
front_m = front/1000)
62+
front_m = front / 1000)
6863
# Visualisation des premières lignes du tableau
6964
head(crabs)
7065
```
7166

7267
```{r mutate_h3, exercise=TRUE}
73-
# fmutate
7468
___ <- ___(___,
7569
___ = ___,
7670
___ = ___,
@@ -80,8 +74,7 @@ ___(___)
8074
```
8175

8276
```{r mutate_h3-hint-1}
83-
# fmutate
84-
DF <- fmutate(___,
77+
DF <- smutate(___,
8578
length_log = ___,
8679
width_sqrt = ___,
8780
front_m = ___)
@@ -90,92 +83,93 @@ head(___)
9083
```
9184

9285
```{r mutate_h3-hint-2}
93-
# fmutate
94-
crabs <- fmutate(crabs,
86+
crabs <- smutate(crabs,
9587
length_log = log(___),
9688
width_sqrt = sqrt(___),
97-
front_m = ___/1000)
89+
front_m = ___ / 1000)
9890
# Visualisation des premières lignes du tableau
9991
head(___)
10092
10193
#### Attention : solution dans le 'hint' suivant! ####
10294
```
10395

10496
```{r mutate_h3-solution}
105-
# fmutate
106-
crabs <- fmutate(crabs,
97+
## Solution ##
98+
crabs <- smutate(crabs,
10799
length_log = log(length),
108100
width_sqrt = sqrt(width),
109-
front_m = front/1000)
101+
front_m = front / 1000)
110102
# Visualisation des premières lignes du tableau
111103
head(crabs)
112104
```
113105

114106
```{r mutate_h3-check}
115-
grade_code("Vous savez maintenant comment calculer de nouvelles variables avec la fonction `fmutate()`.")
107+
grade_code("Vous savez maintenant comment calculer de nouvelles variables avec la fonction `smutate()`.")
116108
```
117109

118110
## Filtrer et sélectionner des données
119111

120-
Reprenons le jeu de données initial sur nos crabes (`crabs`)
112+
Reprenons le jeu de données initial sur nos crabes (`crabs`).
121113

122114
```{r}
123115
# Importation des données sur nos crabes
124116
(crabs <- read("crabs", package = "MASS", lang = "fr"))
125117
```
126118

127-
Réalisez les opérations suivantes avec les fonctions `filter()` et `select()` :
119+
Réalisez les opérations suivantes avec les fonctions tidy `filter()` et `select()` :
128120

129121
- Retirer la variable index (`index`) du jeu de données
130122
- Garder uniquement les individus mâles du jeu de données dont la longueur de la carapace est supérieure ou égale à 25 mm (variables `sex` et `length`)
131-
- Affichez ensuite les premières lignes du tableau (par défaut, les 6 premières lignes sont affichées). Attention ! Comme la fonction que vous utiliserez est non-tidy, il faut collecter le tableau de résultats avant !
132-
133-
Employez le chaînage des instructions au sein d'un pipeline pour résoudre cette exercice.
123+
- Enregistrez le résultat dans `crabs2`
124+
- Affichez ensuite les premières lignes du tableau `crabs2`
134125

135-
Vous devez obtenir le tableau ci-dessous :
126+
Employez le chaînage des instructions dans un pipeline pour résoudre cette exercice. Vous devez obtenir le tableau ci-dessous :
136127

137128
```{r}
138129
crabs %>.%
139130
select(., -index) %>.%
140-
filter(., sex == "M" & length >= 25) %>.%
141-
collect_dtx(.) %>.%
142-
head(.)
131+
filter(., sex == "M" & length >= 25) %->%
132+
crabs2
133+
head(crabs2)
143134
```
144135

145136
```{r pipe1_h3, exercise=TRUE}
146137
crabs ___
147138
___(___, ___) ___
148139
___(___, ___ & ___) ___
149-
___(___) ___
150-
___(___)
140+
___
141+
___(___)
151142
```
152143

153144
```{r pipe1_h3-hint-1}
154145
crabs %>.%
155146
select(___, ___) ___
156147
filter(___, ___ & ___) ___
157-
collect_dtx(___) ___
158-
head(___)
148+
___
149+
head(___)
159150
```
160151

161152
```{r pipe1_h3-hint-2}
162153
crabs %>.%
163154
select(., - ___) %>.%
164155
filter(___, sex == ___ & length >= ___) ___
165-
collect_dtx(___) ___
166-
head(___)
156+
___
157+
head(___)
158+
159+
#### Attention : solution dans le 'hint' suivant! ####
167160
```
168161

169162
```{r pipe1_h3-solution}
163+
## Solution ##
170164
crabs %>.%
171165
select(., -index) %>.%
172-
filter(., sex == "M" & length >= 25) %>.%
173-
collect_dtx(.) %>.%
174-
head(.)
166+
filter(., sex == "M" & length >= 25) %->%
167+
crabs2
168+
head(crabs2)
175169
```
176170

177171
```{r pipe1_h3-check}
178-
grade_code("Vous maitrisez maintenant la sélection de vos variables avec `select()` et de vos observations avec `filter()`. Ce sont des fonctions tidy, donc, pensez bien à collecter les résultats à la fin avec `collect_dtx()`, ou en assignant avec `%<-%` ou `%->%` !")
172+
grade_code("La sélection de vos variables avec `select()` et de vos observations avec `filter()` (fonctions tidy) nécessite de collecter le résultat soit avec collect_dtx(), soit en utilisant l'assignation alternative %<-% ou %->% . En général dans un pipeline, finnissez toujours en assignant avec %->%, quelles que soient les fonctions utilisées.")
179173
```
180174

181175
## Résumer des données
@@ -190,22 +184,22 @@ Reprenons le jeu de données initial `crabs`.
190184
Réalisez les opérations suivantes :
191185

192186
- Sélectionnez les individus dont la longueur (`length`) est strictement supérieur à 25 mm
193-
- Résumez le jeu de données par le sexe (`sex`) et par la variété (`species`) de *Leptograpsus variegatus*
187+
- Résumez le jeu de données par le sexe (`sex`) et par la variété (`species`) de ce crabe dans cet ordre
194188
- Calculez la moyenne de la largeur des carapaces (`width`) par groupe
195-
- Dénombrez les individus par groupe
189+
- Dénombrez les individus par groupe (y compris les valeurs manquantes)
190+
- Dénombrez les observations par groupe (à l'exclusion des valeurs manquantes)
196191
- Assignez le résultat à `crabs2`
197-
- Formatez votre tableau `crabs2` avec la fonction `kintr::kable()`
198-
199-
Employez le chaînage des opérations au sein d'un pipeline pour résoudre cette exercice.
192+
- Formatez votre tableau `crabs2` avec la fonction `knitr::kable()`
200193

201-
Vous devez obtenir le tableau ci-dessous :
194+
Employez des fonction speedy et fstat uniquement et le chaînage des opérations dans un pipeline pour résoudre cette exercice. Vous devez obtenir le tableau ci-dessous :
202195

203196
```{r}
204197
crabs %>.%
205-
filter(., length > 25) %>.%
206-
group_by(., sex, species) |> summarise(
207-
mean = mean(width),
208-
number = n()) %->%
198+
sfilter(., length > 25) %>.%
199+
sgroup_by(., sex, species) |> ssummarise(
200+
mean = fmean(width),
201+
number = fn(width),
202+
observations = fnobs(width)) %->%
209203
crabs2
210204
knitr::kable(crabs2)
211205
```
@@ -214,44 +208,51 @@ knitr::kable(crabs2)
214208
crabs ___
215209
___(___, ___) ___
216210
___(___, ___, ___) ___ ___
217-
mean = ___(___),
218-
number = ___()) ___
211+
mean = ___(___),
212+
number = ___(___),
213+
observations = ___(___)) ___
219214
___
220215
___(___)
221216
```
222217

223218
```{r pipe2_h3-hint-1}
224219
crabs %>.%
225-
filter(___, ___) ___
226-
group_by(___, ___, ___) ___ summarise(
227-
mean = ___(___),
228-
number = ___()) ___
220+
sfilter(___, ___) ___
221+
sgroup_by(___, ___, ___) ___ ssummarise(
222+
mean = ___(___),
223+
number = ___(___),
224+
observations = ___(___)) ___
229225
___
230226
kintr::kable(___)
231227
```
232228

233229
```{r pipe2_h3-hint-2}
234230
crabs %>.%
235-
filter(., length > ___) %>.%
236-
group_by(., ___, ___) |> summarise(
237-
mean = mean(___),
238-
number = n()) ___
231+
sfilter(., length > ___) %>.%
232+
sgroup_by(., ___, ___) |> ssummarise(
233+
mean = fmean(___),
234+
number = fn(___),
235+
observations = fnobs(___)) ___
239236
___
240237
knitr::kable(___)
238+
239+
#### Attention : solution dans le 'hint' suivant! ####
241240
```
242241

243242
```{r pipe2_h3-solution}
243+
## Solution ##
244244
crabs %>.%
245-
filter(., length > 25) %>.%
246-
group_by(., sex, species) |> summarise(
247-
mean = mean(width),
248-
number = n()) %->%
245+
sfilter(., length > 25) %>.%
246+
sgroup_by(., sex, species) |> ssummarise(
247+
mean = fmean(width),
248+
number = fn(width),
249+
observations = fnobs(width)) %->%
249250
crabs2
250251
knitr::kable(crabs2)
251252
```
252253

253254
```{r pipe2_h3-check}
254-
grade_code("Vous progressez à grand pas ! Vous savez maintenant résumer vos données avec `group_by()` et `summarise()` et formater vos sorties avec `knitr::kable()`. Très important : utilisez toujours l'assignation alternative `%->%` en fin de pipeline qui utilise des fonctions tidy.")
255+
grade_code("Vous avez maintenant compris comment résumer vos données avec `(s)group_by()` et `(s)summarise()` et formater vos sorties avec `knitr::kable()`. Utilisez toujours l'assignation alternative `%->%` en fin de pipeline, c'est plus prudent.")
255256
```
256257

257258
## Conclusion
@@ -260,11 +261,11 @@ Bravo ! Vous venez de terminer votre séance d'exercices relative à la manipul
260261

261262
Vous maîtriser maintenant :
262263

263-
- les notions relatives aux remaniement des données avec les fonctions `select()`, `filter()`, `mutate()`, `group_by()`, `summarise()`
264-
- le chaînages des instructions au sein d'un pipeline
264+
- les notions relatives aux remaniement des données avec les fonctions `(s)select()`, `(s)filter()`, `(s)mutate()`, `(s)group_by()`, `(s)summarise()`
265+
- le chaînages des instructions dans un pipeline
265266
- l'utilisation judicieuse de `%>.%` pour indiquer que l'on passe à l'opération suivante
266-
- l'utilisation de `|>` pour organiser le code plus complexe au sein d'une même opération (typiquement un `group_by()` suivi d'un `summarise()`)
267-
- l'assignation alternative `%->%` en fin de pipeline "tidy" pour collecter les résultats dans un tableau (data frame)
267+
- l'utilisation de `|>` pour organiser le code plus complexe sur un même niveau (typiquement un `(s)group_by()` suivi d'un `(s)summarise()`)
268+
- l'assignation alternative `%->%` en fin de pipeline tidy pour collecter les résultats dans un tableau
268269

269270
```{r comm_noscore, echo=FALSE}
270271
question_text(

0 commit comments

Comments
 (0)