0% ont trouvé ce document utile (0 vote)
30 vues7 pages

Jointures de tableaux en R avec dplyr

Le document explique comment effectuer différentes types de jointures en R, y compris les jointures gauche, droite, interne et complète, en utilisant les packages dplyr et base R. Il aborde également la gestion des doublons, des jointures conditionnelles et des conflits de noms de colonnes lors des jointures. Des exemples de code illustrent chaque méthode pour faciliter la compréhension.

Transféré par

ibrahim ibn isshaq
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues7 pages

Jointures de tableaux en R avec dplyr

Le document explique comment effectuer différentes types de jointures en R, y compris les jointures gauche, droite, interne et complète, en utilisant les packages dplyr et base R. Il aborde également la gestion des doublons, des jointures conditionnelles et des conflits de noms de colonnes lors des jointures. Des exemples de code illustrent chaque méthode pour faciliter la compréhension.

Transféré par

ibrahim ibn isshaq
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

JOINTURE AVEC R

Création de deux tableaux


table1 <- data.frame(id = 1:3, nom = c("Alice", "Bob", "Charlie"))
table1
id nom
1 1 Alice
2 2 Bob
3 3 Charlie
table2 <- data.frame(id = c(1, 2, 4), age = c(25, 30, 35))
table2
id age
1 1 25
2 2 30
3 4 35
Jointure gauche (left_join)
La jointure gauche conserve toutes les lignes du tableau de gauche et
ajoute les colonnes du tableau de droite qui correspondent.
library(dplyr)
resultat <- left_join(table1, table2, by = "id")
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie NA

Jointure droite (right_join)


La jointure droite conserve toutes les lignes du tableau de droite et
ajoute les colonnes du tableau de gauche qui correspondent.
resultat <- right_join(table1, table2, by = "id")
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 4 <NA> 35
Jointure interne (inner_join)
La jointure interne ne conserve que les lignes qui ont des
correspondances dans les deux tableaux.
resultat <- inner_join(table1, table2, by = "id")
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
Jointure complète (full_join)
La jointure complète conserve toutes les lignes des deux tableaux et
ajoute les colonnes correspondantes.
resultat <- full_join(table1, table2, by = "id")
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
Page 1 sur 7
3 3 Charlie NA
4 4 <NA> 35

Pour effectuer une jointure sans utiliser le package dplyr on peut


utiliser la fonction merge(). Voici quelques exemples de jointures
courantes :
Jointure interne (Inner Join)
La jointure interne ne conserve que les lignes qui ont des
correspondances dans les deux tableaux.
resultat <- merge(table1, table2, by = "id")
resultat
id nom age
1 1 Alice 25
2 2 Bob 30

Jointure gauche (Left Join)


La jointure gauche conserve toutes les lignes du tableau de gauche et
ajoute les colonnes du tableau de droite qui correspondent.
resultat <- merge(table1, table2, by = "id", all.x = TRUE)
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie NA

Jointure droite (Right Join)


La jointure droite conserve toutes les lignes du tableau de droite et
ajoute les colonnes du tableau de gauche qui correspondent.
resultat <- merge(table1, table2, by = "id", all.y = TRUE)
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 4 <NA> 35

Jointure complète (Full Join)


La jointure complète conserve toutes les lignes des deux tableaux et
ajoute les colonnes correspondantes.
resultat <- merge(table1, table2, by = "id", all = TRUE)
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie NA
4 4 <NA> 35

Page 2 sur 7
Pour gérer les doublons lors d'une jointure en R, il est possible
d’utiliser plusieurs approches. Voici quelques méthodes courantes :
Utiliser distinct() de dplyr
La fonction distinct() permet de supprimer les doublons avant ou après
la jointure.
library(dplyr)
# Création des tableaux
tab1 <- data.frame(id = c(1, 2, 2, 3), nom = c("Alice", "Bob", "Bob",
"Charlie"))
tab1
id nom
1 1 Alice
2 2 Bob
3 2 Bob
4 3 Charlie

tab2 <- data.frame(id = c(1, 2, 4), age = c(25, 30, 35))


tab2
id age
1 1 25
2 2 30
3 4 35

# Supprimer les doublons avant la jointure


tab1_unique <- distinct(tab1)
tab1_unique
id nom
1 1 Alice
2 2 Bob
3 3 Charlie

resultat <- left_join(tab1_unique, tab2, by = "id")


resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie NA

Utiliser duplicated() de base R


La fonction duplicated() permet d'identifier et de supprimer les
doublons.
# Supprimer les doublons avant la jointure
tab1_unique <- tab1[!duplicated(tab1), ]
resultat <- merge(tab1_unique, tab2, by = "id", all.x = TRUE)
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie NA

Page 3 sur 7
Gérer les doublons après la jointure
Après avoir effectué la jointure, on peut
utiliser distinct() ou duplicated() pour supprimer les doublons dans le
résultat final.
# Jointure avec doublons
resultat <- merge(tab1, tab2, by = "id", all.x = TRUE)
resultat
id nom age
1 1 Alice 25
2 2 Bob 30
3 2 Bob 30
4 3 Charlie NA

# Supprimer les doublons après la jointure


resultat_unique <- resultat[!duplicated(resultat), ]
resultat_unique
id nom age
1 1 Alice 25
2 2 Bob 30
4 3 Charlie NA

Page 4 sur 7
Pour effectuer une jointure conditionnelle en R, on peut utiliser une
combinaison de dplyr et de fonctions de base R pour ajouter des
conditions spécifiques. Voici un exemple :
Exemple de jointure conditionnelle avec dplyr
Supposons qu’on souhaite joindre deux tables en fonction d'une condition
spécifique sur une colonne.
library(dplyr)
# Création des tables
tab1 <- data.frame(id = 1:4, nom = c("Alice", "Bob", "Charlie", "David"),
score = c(85, 90, 78, 88))
tab1
id nom score
2 2 Bob 90
3 3 Charlie 78
4 4 David 88

tab2 <- data.frame(id = c(1, 2, 3, 4), age = c(25, 30, 35, 40))
tab2
id age
1 1 25
2 2 30
3 3 35
4 4 40

# Jointure conditionnelle : joindre seulement si le score est supérieur


à 80
resultat <- tab1 %>% filter(score > 80) %>% left_join(tab2, by = "id")
resultat
id nom score age
1 1 Alice 85 25
2 2 Bob 90 30
3 4 David 88 40

Exemple de jointure conditionnelle avec base R


On peut également utiliser des fonctions de base R pour effectuer une
jointure conditionnelle.
# Filtrer les lignes avant la jointure
tab1_filtre <- tab1[tab1$score > 80, ]
tab1_filtre
id nom score
1 1 Alice 85
2 2 Bob 90
4 4 David 88

# Jointure avec merge()


resultat <- merge(tab1_filtre, tab2, by = "id", all.x = TRUE)
resultat
id nom score age
1 1 Alice 85 25
2 2 Bob 90 30
3 4 David 88 40

Page 5 sur 7
Pour effectuer une jointure avec plusieurs conditions en R, tu peux
utiliser le package dplyr et spécifier plusieurs colonnes dans
l'argument by. Voici un exemple :
Exemple avec dplyr
Supposons que nous ayons deux tables et qu’on souhaite les joindre en
utilisant plusieurs colonnes comme conditions.
library(dplyr)
# Création des tableaux
tab1 <- data.frame(id = 1:4, nom = c("Alice", "Bob", "Charlie", "David"),
score = c(85, 90, 78, 88))
tab1
id nom score
1 1 Alice 85
2 2 Bob 90
3 3 Charlie 78
4 4 David 88

tab2 <- data.frame(id = c(1, 2, 3, 4), age = c(25, 30, 35, 40), score =
c(85, 90, 80, 88))
tab2
id age score
1 1 25 85
2 2 30 90
3 3 35 80
4 4 40 88

# Jointure avec plusieurs conditions


resultat <- tab1 %>% inner_join(tab2, by = c("id", "score"))
resultat
id nom score age
1 1 Alice 85 25
2 2 Bob 90 30
3 4 David 88 40

Exemple avec base R


Tu peux également utiliser la fonction merge() de base R pour effectuer
une jointure avec plusieurs conditions.
# Jointure avec plusieurs conditions
resultat <- merge(tab1, tab2, by = c("id", "score"))
resultat
id score nom age
1 1 85 Alice 25
2 2 90 Bob 30
3 4 88 David 40

Page 6 sur 7
Pour gérer les conflits lors d'une jointure en R, on peut utiliser
plusieurs approches pour résoudre les problèmes de colonnes ayant le
même nom ou des valeurs conflictuelles. Voici quelques méthodes courantes
:
Renommer les colonnes avant la jointure
Avant de faire la jointure, on peut renommer les colonnes pour éviter
les conflits de noms.
# Création des tables
tab1 <- data.frame(id = 1:3, nom = c("Alice", "Bob", "Charlie"), valeur
= c(10, 20, 30))
tab1
id nom valeur
1 1 Alice 10
2 2 Bob 20
3 3 Charlie 30

tab2 <- data.frame(id = c(1, 2, 4), valeur = c(100, 200, 300))


tab2
id valeur
1 1 100
2 2 200
3 4 300

# Renommer la colonne valeur de tab2


colnames(tab2)[2]<- "valeur_tab2"
tab2
id valeur_tab2
1 1 100
2 2 200
3 4 300

# Jointure
resultat <- merge(tab1, tab2, by = "id", all = TRUE)
resultat
id nom valeur valeur_tab2
1 1 Alice 10 100
2 2 Bob 20 200
3 3 Charlie 30 NA
4 4 <NA> NA 300

Utiliser les suffixes avec merge()


La fonction merge() permet d'ajouter des suffixes aux colonnes pour
éviter les conflits.
# Jointure avec suffixes
resultat <- merge(tab1, tab2, by = "id", suffixes = c("_tab1", "_tab2"))
resultat
id nom valeur_tab1 valeur_tab2
1 1 Alice 10 100
2 2 Bob 20 200

Page 7 sur 7

Vous aimerez peut-être aussi