Skip to content

Commit 020b344

Browse files
authored
Update datatable-reshape.Rmd #7220 realign on EN contents
1 parent 8a5616c commit 020b344

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

vignettes/fr/datatable-reshape.Rmd

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ vignette: >
1111

1212
```{r echo=FALSE, file='../_translation_links.R'}
1313
```
14-
`r .write.translation.links("Translations of this document are available in: %s")`
14+
`r .write.translation.links("Une traduction de ce document est disponible en : %s")`
1515

1616
```{r, echo = FALSE, message = FALSE}
1717
require(data.table)
@@ -134,26 +134,25 @@ dcast(DT.m1, family_id ~ ., fun.aggregate = function(x) sum(!is.na(x)), value.va
134134

135135
Voir `?dcast` pour d'autres arguments utiles et des exemples supplémentaires.
136136

137-
## 2. Limitations des approches actuelles `melt/dcast`
137+
## 2. Limitations des approches précédentes `melt/dcast`
138138

139139
Jusqu'à présent, nous avons vu des fonctionnalités de `melt` et `dcast` qui sont implémentées efficacement pour les objets `data.table`, en utilisant la machinerie interne de `data.table` (*tri par base rapide*, *recherche binaire* etc...).
140140

141141
Cependant, il existe des situations où l'opération souhaitée ne s'exprime pas de manière simple. Par exemple, considérons l'objet `data.table` présenté ci-dessous :
142142

143143
```{r}
144-
s2 <- "family_id age_mother dob_child1 dob_child2 dob_child3 gender_child1 gender_child2 gender_child3
145-
1 30 1998-11-26 2000-01-29 NA 1 2 NA
146-
2 27 1996-06-22 NA NA 2 NA NA
147-
3 26 2002-07-11 2004-04-05 2007-09-02 2 2 1
148-
4 32 2004-10-10 2009-08-27 2012-07-21 1 1 1
149-
5 29 2000-12-05 2005-02-28 NA 2 1 NA"
144+
s2 <- "family_id age_mother name_child1 name_child2 name_child3 gender_child1 gender_child2 gender_child3
145+
1 30 Ben Anna NA 1 2 NA
146+
2 27 Tom NA NA 2 NA NA
147+
3 26 Lia Sam Amy 2 2 1
148+
4 32 Max Zoe Joe 1 1 1
149+
5 29 Dan Eva NA 2 1 NA"
150150
DT <- fread(s2)
151151
DT
152-
153152
## 1 = femme, 2 = homme
154153
```
155154

156-
Et vous aimeriez combiner (avec `melt`) toutes les colonnes `dob` ensemble, ainsi que toutes les colonnes `gender` ensemble. Avec la fonctionnalité actuelle, nous pouvons faire quelque chose comme ceci :
155+
Et vous aimeriez combiner (avec `melt`) toutes les colonnes `name` ensemble, ainsi que toutes les colonnes `gender` ensemble. Avec les anciennes fonctionnalités, nous pouvions faire quelque chose comme ceci :
157156

158157
```{r}
159158
DT.m1 = melt(DT, id.vars = c("family_id", "age_mother"))
@@ -166,11 +165,11 @@ str(DT.c1) ## la colonne 'gender' est un type de caractère maintenant !
166165

167166
#### Problèmes
168167

169-
1. Ce que nous voulions faire était de combiner toutes les colonnes de type `dob` ensemble, et toutes les colonnes de type `gender` ensemble. Au lieu de cela, nous combinons tout, puis nous les scindons à nouveau. On voit aisément que c'est une approche détournée (et inefficace).
168+
1. Ce que nous voulions faire était de combiner toutes les colonnes de type `name` ensemble, et toutes les colonnes de type `gender` ensemble. Au lieu de cela, nous combinons tout, puis nous les scindons à nouveau. On voit aisément que c'est une approche détournée (et inefficace).
170169

171170
Comme analogie, imaginez un placard avec quatre étagères de vêtements, et vous souhaitez rassembler les vêtements des étagères 1 et 2 (dans l'étagère 1), et ceux des étagères 3 et 4 (dans l'étagère 3). Ce que nous faisons, en quelque sorte, c'est de mélanger tous les vêtements ensemble, puis de les séparer à nouveau sur les étagères 1 et 3 !
172171

173-
2. Les colonnes à transformer (`melt`) peuvent être de types différents, comme c'est le cas ici (types `character` et `integer`). En les transformant toutes ensemble avec `melt`, les colonnes seront forcées d'être du même type, comme l'explique le message d'avertissement ci-dessus, et on le voit dans la sortie de str(DT.c1), où la colonne `gender` a été convertie en type `character`.
172+
2. Les colonnes à transformer (`melt`) peuvent être de types différents. En les transformant toutes ensemble avec `melt`, elles seront forcées d'être du même type.
174173

175174
3. Nous générons une colonne supplémentaire en scindant la colonne variable en deux colonnes, dont l'utilité est plutôt obscure. Nous faisons cela parce que nous en avons besoin pour la transformation (`cast`) dans l'étape suivante.
176175

@@ -189,9 +188,9 @@ Puisque nous aimerions que `data.table` effectue cette opération de façon simp
189188
L'idée est assez simple. Nous passons une liste de colonnes à `measure.vars`, où chaque élément de la liste contient les colonnes qui doivent être combinées ensemble.
190189

191190
```{r}
192-
colA = paste0("dob_child", 1:3)
191+
colA = paste0("name_child", 1:3)
193192
colB = paste0("gender_child", 1:3)
194-
DT.m2 = melt(DT, measure.vars = list(colA, colB), value.name = c("dob", "gender"))
193+
DT.m2 = melt(DT, measure.vars = list(colA, colB), value.name = c("name", "gender"))
195194
DT.m2
196195
197196
str(DT.m2) ## le type de col est préservé
@@ -206,7 +205,7 @@ str(DT.m2) ## le type de col est préservé
206205
En général, dans ce type de problème, les colonnes que l'on souhaite transformer avec `melt` peuvent être distinguées par un motif commun. Nous pouvons utiliser la fonction `patterns()`, implémentée pour faciliter cette tâche, pour fournir des expressions régulières correspondant aux colonnes à combiner ensemble. L'opération ci-dessus peut alors être réécrite comme suit :
207206

208207
```{r}
209-
DT.m2 = melt(DT, measure.vars = patterns("^dob", "^gender"), value.name = c("dob", "gender"))
208+
DT.m2 = melt(DT, measure.vars = patterns("^name", "^gender"), value.name = c("name", "gender"))
210209
DT.m2
211210
```
212211

@@ -278,7 +277,7 @@ Nous pouvons désormais fournir **plusieurs colonnes `value.var`** à `dcast` po
278277

279278
```{r}
280279
## nouvelle fonctionnalité 'cast' - plusieurs value.vars
281-
DT.c2 = dcast(DT.m2, family_id + age_mother ~ variable, value.var = c("dob", "gender"))
280+
DT.c2 = dcast(DT.m2, family_id + age_mother ~ variable, value.var = c("name", "gender"))
282281
DT.c2
283282
```
284283

0 commit comments

Comments
 (0)