Fusionar dos DataFrame con diferente número de filas en R

Jinku Hu 30 enero 2023
  1. Utilice la función full_join para fusionar dos DataFrame R con un número diferente de filas
  2. Utilice la función left_join para fusionar dos DataFrame R con un número diferente de filas
  3. Utilice la función right_join para fusionar dos DataFrame R con un número diferente de filas
Fusionar dos DataFrame con diferente número de filas en R

Este artículo demostrará varios métodos para fusionar dos DataFrame con un número diferente de filas en R.

Utilice la función full_join para fusionar dos DataFrame R con un número diferente de filas

full_join es parte del paquete dplyr y se puede usar para fusionar dos DataFrame con un número diferente de filas. La función toma DataFrame para fusionarlos como los dos primeros argumentos y devuelve el mismo tipo de objeto que el primer argumento. Esta función puede operar en tipos de extensión de DataFrame como tibble o DataFrame perezosos. full_join extrae todas las filas y columnas de ambos argumentos del DataFrame. Llena los elementos con NA-s cuando no hay valores coincidentes.

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

Utilice la función left_join para fusionar dos DataFrame R con un número diferente de filas

left_join es otro método del paquete dplyr. Toma argumentos similares a la función full_join, pero left_join extrae todas las filas del primer DataFrame y todas las columnas de ambos.

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

Producción :

  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>

Utilice la función right_join para fusionar dos DataFrame R con un número diferente de filas

right_join funciona de manera similar a la función left_join excepto que extrae todas las filas del segundo argumento del DataFrame en lugar del primero. La función también copia todas las columnas de ambos DataFrame en un objeto recién construido.

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

Producción :

  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
Autor: 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

Artículo relacionado - R Data Frame