Jointure de données avec data.table en R
Scott Ritchie
Postdoctoral Researcher in Systems Genomics
Forme générale de la syntaxe data.table
DT[i, j, by]
| | |
| | --> groupé par quoi ?
| -----> quoi faire ?
--------> sur quelles lignes ?
Forme générale des jointures en syntaxe data.table
DT[i, on]
| |
| ----> colonnes clés de la jointure
--------> joindre à quel data.table ?
La jointure par défaut est une jointure à droite
demographics[shipping, on = .(name)]

Les variables dans list() ou .() sont cherchées parmi les noms de colonnes des deux data.table
shipping[demographics, on = list(name)]
shipping[demographics, on = .(name)]
On peut aussi utiliser des vecteurs de caractères
join_key <- c("name")
shipping[demographics, on = join_key]
Rappel : une jointure à gauche équivaut à une jointure à droite avec l'ordre inversé :
shipping[demographics, on = .(name)]

Indiquez nomatch = 0 pour effectuer une jointure interne :
shipping[demographics, on = .(name), nomatch = 0]

Impossible avec la syntaxe data.table ; utilisez plutôt la fonction merge() :
merge(demographics, shipping, by = "name", all = TRUE)

Filtrer un data.table pour ne garder que les lignes sans correspondance dans un autre data.table
demographics[!shipping, on = .(name)]

Jointure de données avec data.table en R