|
312 | 312 |
|
313 | 313 | On aurait pu faire la même opération en écrivant `nrow(flights[origin == "JFK" & month == 6L])`. Néanmoins il aurait fallu d'abord dissocier la `data.table` entière en fonction des *indices de lignes* dans `i` *puis* renvoyer les lignes en utilisant `nrow()`, ce qui est inutile et pas efficace. Nous aborderons en détails ce sujet et d'autres aspects de l'optimisation dans la vignette *architecture de `data.table`*. |
314 | 314 |
|
315 | | -### h) Super ! Mais comment référencer les colonnes par nom dans `j` (comme avec un `data.frame`) ? {#refer_j} |
| 315 | +### h) Super ! Mais comment référencer les colonnes par nom dans `j` (comme avec un `data.frame`) ? {#refer-j} |
316 | 316 |
|
317 | 317 | Si vous imprimez le nom des colonnes explicitement, il n'y a pas de différence avec un `data.frame` (depuis v1.9.8). |
318 | 318 |
|
|
418 | 418 | |
419 | 419 | Nous utiliserons cette forme pratique chaque fois que cela sera possible. |
420 | 420 |
|
421 | | -#### -- Comment calculer le nombre de voyages au départ de chaque aéroport pour le transporteur ayant le code `"AA"`? {#origin-.N} |
| 421 | +#### -- Comment calculer le nombre de voyages au départ de chaque aéroport pour le transporteur ayant le code `"AA"`? {#origin-N} |
422 | 422 |
|
423 | 423 | Le code unique de transporteur `"AA"` correspond à *American Airlines Inc.* |
424 | 424 |
|
|
431 | 431 |
|
432 | 432 | * En utilisant ces *index de ligne*, nous obtenons le nombre de lignes groupées par `origine`. Une fois de plus, aucune colonne n'est matérialisée ici, car l'expression `j' ne nécessite aucune colonne pour définir le sous-ensemble et le calcul est donc rapide et peu gourmand en mémoire. |
433 | 433 |
|
434 | | -#### -- Comment obtenir le nombre total de voyages pour chaque paire `origin, dest` du transporteur ayant pour code `"AA"`? {#origin-dest-.N} |
| 434 | +#### -- Comment obtenir le nombre total de voyages pour chaque paire `origin, dest` du transporteur ayant pour code `"AA"`? {#origin-dest-N} |
435 | 435 |
|
436 | 436 | ```{r} |
437 | 437 | ans <- flights[carrier == "AA", .N, by = .(origin, dest)] |
@@ -479,7 +479,7 @@ Nous en apprendrons plus au sujet des `clés` dans la vignette *Clés et sous-en |
479 | 479 |
|
480 | 480 | ### c) Chaînage |
481 | 481 |
|
482 | | -Considérons la tâche consistant à [récupérer le nombre total de voyages pour chaque couple `origin, dest` du transporteur *"AA"*](#origin-dest-.N). |
| 482 | +Considérons la tâche consistant à [récupérer le nombre total de voyages pour chaque couple `origin, dest` du transporteur *"AA"*](#origin-dest-N). |
483 | 483 |
|
484 | 484 | ```{r} |
485 | 485 | ans <- flights[carrier == "AA", .N, by = .(origin, dest)] |
@@ -579,7 +579,7 @@ Nous y sommes presque. Il reste encore une petite chose à régler. Dans notre ` |
579 | 579 |
|
580 | 580 | En utilisant l'argument `.SDcols`. Il accepte soit des noms soit des indices de colonnes. Par exemple, `.SDcols = c("arr_delay", "dep_delay")` permet que `.SD` ne comporte que ces deux colonnes pour chaque groupe. |
581 | 581 |
|
582 | | -De la même manière que [part g)](#refer_j), vous pouvez également spécifier les colonnes à supprimer au lieu des colonnes à garder en utilisant le `-` ou `!`. De plus, vous pouvez sélectionner des colonnes consécutives avec `colA:colB` et les désélectionner avec `!(colA:colB)` ou `-(colA:colB)`. |
| 582 | +De la même manière que [part g)](#refer-j), vous pouvez également spécifier les colonnes à supprimer au lieu des colonnes à garder en utilisant le `-` ou `!`. De plus, vous pouvez sélectionner des colonnes consécutives avec `colA:colB` et les désélectionner avec `!(colA:colB)` ou `-(colA:colB)`. |
583 | 583 |
|
584 | 584 | Maintenant essayons d'utiliser `.SD` avec `.SDcols` pour obtenir la moyenne `mean()` des colonnes `arr_delay` et `dep_delay` groupées par `origin`, `dest` et `month`. |
585 | 585 |
|
|
0 commit comments