Comment faire une jointure externe dans R (avec exemples)



Il existe deux manières courantes d’effectuer une jointure externe dans R :

Méthode 1 : utiliser Base R

merge(df1, df2, by='column_to_join_on', all=TRUE)

Méthode 2 : utiliser dplyr

library(dplyr)

full_join(df1, df2, by='column_to_join_on')

Chaque méthode renverra toutes les lignes des deux tables.

Les deux méthodes produiront le même résultat, mais la méthode dplyr aura tendance à fonctionner plus rapidement sur des ensembles de données extrêmement volumineux.

Les exemples suivants montrent comment utiliser chacune de ces fonctions en pratique avec les trames de données suivantes :

#define first data frame
df1 = data.frame(team=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
                 points=c(18, 22, 19, 14, 14, 11, 20, 28))

df1

  team points
1    A     18
2    B     22
3    C     19
4    D     14
5    E     14
6    F     11
7    G     20
8    H     28

#define second data frame
df2 = data.frame(team=c('A', 'B', 'C', 'D', 'L', 'M'),
                 assists=c(4, 9, 14, 13, 10, 8))

df2

  team assists
1    A       4
2    B       9
3    C      14
4    D      13
5    L      10
6    M       8

Exemple 1 : jointure externe utilisant Base R

Nous pouvons utiliser la fonction merge() en base R pour effectuer une jointure externe, en utilisant la colonne ‘team’ comme colonne sur laquelle rejoindre :

#perform outer join using base R
df3 <- merge(df1, df2, by='team', all=TRUE)

#view result
df3

   team points assists
1     A     18       4
2     B     22       9
3     C     19      14
4     D     14      13
5     E     14      NA
6     F     11      NA
7     G     20      NA
8     H     28      NA
9     L     NA      10
10    M     NA       8

Notez que toutes les lignes des deux blocs de données sont renvoyées.

Exemple 2 : jointure externe utilisant dplyr

Nous pouvons utiliser la fonction full_join() du package dplyr pour effectuer une jointure externe, en utilisant la colonne ‘team’ comme colonne sur laquelle rejoindre :

library(dplyr)

#perform outer join using dplyr 
df3 <- full_join(df1, df2, by='team')

#view result
df3

   team points assists
1     A     18       4
2     B     22       9
3     C     19      14
4     D     14      13
5     E     14      NA
6     F     11      NA
7     G     20      NA
8     H     28      NA
9     L     NA      10
10    M     NA       8

Notez que cela correspond au résultat que nous avons obtenu en utilisant la fonction merge() en base R.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :

Comment faire une jointure à gauche dans R
Comment faire une jointure à droite dans R
Comment faire une jointure interne dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *