Fusionner deux trames de données avec un nombre différent de lignes dans R

Jinku Hu 30 janvier 2023
  1. Utilisez la fonction full_join pour fusionner deux trames de données R avec un nombre de lignes différent
  2. Utilisez la fonction left_join pour fusionner deux trames de données R avec un nombre différent de lignes
  3. Utilisez la fonction right_join pour fusionner deux trames de données R avec un nombre différent de lignes
Fusionner deux trames de données avec un nombre différent de lignes dans R

Cet article présentera plusieurs méthodes de fusion de deux blocs de données avec un nombre différent de lignes dans R.

Utilisez la fonction full_join pour fusionner deux trames de données R avec un nombre de lignes différent

full_join fait partie du package dplyr et peut être utilisé pour fusionner deux trames de données avec un nombre différent de lignes. La fonction utilise des trames de données à fusionner en tant que deux premiers arguments et renvoie le même type d’objet que le premier argument. Cette fonction peut fonctionner sur des types d’extension de DataFrame comme tibble ou des trames de données paresseuses. full_join extrait toutes les lignes et colonnes des deux arguments de la DataFrame. Il remplit les éléments avec des NA lorsqu’il n’y a pas de valeurs correspondantes.

library(dplyr)

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)

df1 <- data.frame(v1, v2)

v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))

df2 <- data.frame(v1, v2, wday)

dff <- df1 %>% full_join(df2)
dff
   v1  v2 wday
1  1.1  11 <NA>
2  1.2  12 <NA>
3  1.3  13 <NA>
4  2.1  21 <NA>
5  2.2  22 <NA>
6  2.3  23 <NA>
7  9.1 101  Wed
8  9.2 102  Thu
9  9.3 103  Mon
10 9.1 201  Wed
11 9.2 202  Thu
12 9.3 203  Fri
13 9.3 204  Mon
14 9.2 403  Tue
15 9.1 404  Wed

Utilisez la fonction left_join pour fusionner deux trames de données R avec un nombre différent de lignes

left_join est une autre méthode du paquet dplyr. Il prend des arguments similaires à la fonction full_join, mais left_join extrait toutes les lignes du premier bloc de données et toutes les colonnes des deux.

library(dplyr)

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)

df1 <- data.frame(v1, v2)

v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))

df2 <- data.frame(v1, v2, wday)

dfl <- df1 %>% left_join(df2)
dfl

Production:

  v1 v2 wday
1 1.1 11 <NA>
2 1.2 12 <NA>
3 1.3 13 <NA>
4 2.1 21 <NA>
5 2.2 22 <NA>
6 2.3 23 <NA>

Utilisez la fonction right_join pour fusionner deux trames de données R avec un nombre différent de lignes

right_join fonctionne de manière similaire à la fonction left_join, sauf qu’il extrait toutes les lignes du deuxième argument du bloc de données plutôt que du premier. La fonction copie également toutes les colonnes des deux blocs de données vers un objet nouvellement construit.

library(dplyr)

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)

df1 <- data.frame(v1, v2)

v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))

df2 <- data.frame(v1, v2, wday)

dfr <- df1 %>% right_join(df2)
dfr

Production:

  v1  v2 wday
1 9.1 101  Wed
2 9.2 102  Thu
3 9.3 103  Mon
4 9.1 201  Wed
5 9.2 202  Thu
6 9.3 203  Fri
7 9.3 204  Mon
8 9.2 403  Tue
9 9.1 404  Wed
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - R Data Frame