Объединить два фрейма данных с разным количеством строк в R

  1. Используйте функцию full_join для объединения двух фреймов данных R с разным количеством строк
  2. Используйте функцию left_join для объединения двух фреймов данных R с разным количеством строк
  3. Используйте функцию right_join для объединения двух фреймов данных R с разным количеством строк

В этой статье будет продемонстрировано несколько методов слияния двух фреймов данных с разным количеством строк в R.

Используйте функцию full_join для объединения двух фреймов данных R с разным количеством строк

full_join является частью пакета dplyr и может использоваться для объединения двух фреймов данных с разным количеством строк. Функция принимает фреймы данных для объединения в качестве первых двух аргументов и возвращает тот же тип объекта, что и первый аргумент. Эта функция может работать с типами расширения фреймов данных, такими как tibble или отложенные фреймы данных. full_join извлекает все строки и столбцы из обоих аргументов фрейма данных. Он заполняет элементы символами NA, когда нет совпадающих значений.

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

Используйте функцию left_join для объединения двух фреймов данных R с разным количеством строк

left_join - еще один метод из пакета dplyr. Она принимает аргументы, аналогичные функции full_join, но left_join извлекает все строки из первого кадра данных и все столбцы из них обоих.

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

Выход:

  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>

Используйте функцию right_join для объединения двух фреймов данных R с разным количеством строк

right_join работает аналогично функции left_join, за исключением извлечения всех строк из второго аргумента фрейма данных, а не из первого. Функция также копирует все столбцы из обоих фреймов данных во вновь созданный объект.

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

Выход:

  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

Сопутствующая статья - R Data Frame

  • Найти максимальные абсолютные значения по строке во фрейме данных в R
  • Создайте большой фрейм данных в R
  • Удалить повторяющиеся строки по столбцу в R