You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: vignettes/fr/datatable-joins.Rmd
+9-8Lines changed: 9 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -170,7 +170,7 @@ Products[ProductReceived,
170
170
on = list(id = product_id)]
171
171
```
172
172
173
-
- Inclure les colonnes associées dans l'alias `data.table``list`.
173
+
- Inclure les colonnes associées dans l'alias `data.table``list` : `.`.
174
174
175
175
```{r, eval=FALSE}
176
176
Products[ProductReceived,
@@ -181,7 +181,7 @@ Products[ProductReceived,
181
181
182
182
Dans tous les exemples précédents, nous avons passé le nom des colonnes à sélectionner avec l'argument `on` mais `data.table` possède également des alternatives à cette syntaxe.
183
183
184
-
-**Jointure naturelle** : sélectionne les colonnes pour réaliser la correspondance en fonction des noms des colonnes communes. Pour illustrer cette méthode, modifions la colonne de la table `Products` de `id` en `product_id` et utilisons le mot clé `.NATURAL`.
184
+
-**Jointure naturelle** : sélectionne les colonnes pour réaliser la correspondance en fonction des noms des colonnes en commun. Pour illustrer cette méthode, modifions la colonne de la table `Products` de `id` en `product_id` et utilisons le mot clé `.NATURAL`.
@@ -213,7 +213,7 @@ Notre recommendation est d'utiliser la seconde alternative si possible, car elle
213
213
214
214
##### Gestion de la colonne partagée Names avec l'argument j
215
215
216
-
L'argument `j` autorise plusieurs alternatives intéressantes pour gérer les jointures avec les tables en **partageant les mêmes noms de plusieurs colonnes**. Par défaut toutes les colonnes prennent leur source dans la table `x`, mais nous pouvons aussi utiliser le préfixe `x.` pour clarifier la source et utiliser le préfixe `i.` pour toutes les colonnes de la table déclarée dans l'argument `i` de la table `x`.
216
+
L'argument `j` autorise plusieurs alternatives intéressantes pour gérer les jointures avec les tables en **partageant les mêmes noms pour plusieurs colonnes**. Par défaut toutes les colonnes prennent leur source dans la table `x`, mais nous pouvons aussi utiliser le préfixe `x.` pour clarifier la source et utiliser le préfixe `i.` pour toutes les colonnes de la table déclarée dans l'argument `i` de la table `x`.
217
217
218
218
Si nous retournons au petit supermarché, après avoir mis à jour la table `ProductReceived` avec la table `Products` , supposez que l'on veuille appliquer les modifications suivantes :
219
219
@@ -272,7 +272,7 @@ NewTax[Products, on = c("unit", "type")]
272
272
273
273
### 3.2. Jointure interne
274
274
275
-
Utilisez cette méthode pour combiner les colonnes de deux tables en se basant sur une ou plusieurs références mais ***en gardant seulement les lignes sélectionnées dans les deux tables***.
275
+
Utilisez cette méthode pour combiner les colonnes de deux tables en se basant sur une ou plusieurs références mais ***en conservant seulement les lignes qui correspondent entre les deux tables***.
276
276
277
277
Pour réaliser cette opération il suffit d'ajouter `nomatch = NULL` ou `nomatch = 0` à l'une quelconque des opérations de jointure précédentes pour renvoyer le même résultat.
278
278
@@ -443,9 +443,9 @@ ProductReceived[ProductSales,
443
443
> `allow.cartesian` vaut par défaut FALSE car c'est ce que l'utilisateur a souhaité, et une telle jointure croisée peut conduire à un très grand nombre de lignes dans le résultat. Par exemple, si Table A possède 100 lignes et Table
444
444
B en a 50, leur produit cartésien sera de 5000 lignes (100 * 50). Ce qui peut rapidement accroître la mémoire occupée pour de grands ensembles de données.
445
445
446
-
#### 3.6.1. Selection d'une correspondance
446
+
#### 3.6.1. Selection d'une seule correspondance
447
447
448
-
Après avoir fait la jointure de la table, nous pourrions penser qu'on aurait pu utiliser une seule jointure pour extraire les informations nécessaires. Dans ce cas il y a deux alternatives :
448
+
Après avoir fait la jointure de la table, nous pouvons voir que l'on peut utiliser une seule jointure pour extraire les informations nécessaires. Dans ce cas il y a deux alternatives :
449
449
450
450
- Nous pouvons sélectionner la **première correspondance**, représentée dans l'exemple suivant par `id = 2`.
451
451
@@ -574,6 +574,7 @@ x[i, on = .(x_int >= i_int)]
574
574
```
575
575
576
576
Remarques clé :
577
+
577
578
- Le nom de la colonne de sortie (`x_int`) vient de `x`, mais les valeurs viennent de `i_int` dans `i`.
578
579
- La dernière ligne contient `NA` car aucune ligne de `x` ne correspond à la dernière ligne de `i` (`UPPER == "C"`).
579
580
- Les lignes multiples de `x` sont renvoyées pour correspondre à la première ligne de `i` pour laquelle `UPPER == "A"`.
Nous voici à la fin, nous filtrons le code **ligne absente dans la table originale** renvoyé suite à la jointure. Pour éviter ce comportement il est recommandé de toujours ajouter l'argument `nomatch = NULL`.
654
+
Comme à la fin nous filtrons sur la base d'une opération de jointure, le code a renvoyé une **ligne absente de la table d'origine**. Pour éviter ce comportement il est recommandé de toujours ajouter l'argument `nomatch = NULL`.
654
655
655
656
```{r}
656
657
ProductReceived[list(c(1L, 3L), 100L),
@@ -681,7 +682,7 @@ Products[!"popcorn",
681
682
682
683
L'opérateur `:=` de data.table est utilisé pour modifier des colonnes par référence (c'est à dire sans recopie) lors de la jointure. Syntaxe générale : `x[i, on=, (cols) := val]`.
683
684
684
-
**Mise à jour Simple de un vers un**
685
+
**Mise à jour Simple un à un**
685
686
686
687
Mise à jour de `Products` avec les prix de `ProductPriceHistory` :
0 commit comments