Как присоединиться к нескольким фреймам данных с помощью dplyr


Часто вас может заинтересовать объединение нескольких фреймов данных в R. К счастью, это легко сделать с помощью функции left_join() из пакета dplyr .

library(dplyr)

Например, предположим, что у нас есть следующие три фрейма данных:

#create data frame
df1 <- data.frame(a = c('a', 'b', 'c', 'd', 'e', 'f'),
 b = c(12, 14, 14, 18, 22, 23))

df2 <- data.frame(a = c('a', 'a', 'a', 'b', 'b', 'b'),
 c = c(23, 24, 33, 34, 37, 41))

df3 <- data.frame(a = c('d', 'e', 'f', 'g', 'h', 'i'),
 d = c(23, 24, 33, 34, 37, 41))

Чтобы соединить все три фрейма данных вместе, мы можем просто выполнить два левых соединения, одно за другим:

#join the three data frames
df1 %>%
 left_join (df2, by='a') %>%
 left_join (df3, by='a')

 a b c d
1 a 12 23 NA
2 a 12 24 NA
3 a 12 33 NA
4 b 14 34 NA
5 b 14 37 NA
6 b 14 41 NA
7 c 14 NA NA
8 d 18 NA 23
9 e 22 NA 24
10 f 23 NA 33

Обратите внимание, что вы также можете сохранить результат этого объединения в виде фрейма данных:

#join the three data frames and save result as new data frame named all_data
all_data <- df1 %>%
 left_join (df2, by='a') %>%
 left_join (df3, by='a')

#view summary of resulting data frame
glimpse(all_data)

Observations: 10
Variables: 4
$ a <chr> "a", "a", "a", "b", "b", "b", "c", "d", "e", "f"
$ b <dbl> 12, 12, 12, 14, 14, 14, 14, 18, 22, 23
$ c <dbl> 23, 24, 33, 34, 37, 41, NA, NA, NA, NA
$ d <dbl> NA, NA, NA, NA, NA, NA, NA, 23, 24, 33

Дополнительные ресурсы

Как фильтровать строки в R
Как удалить повторяющиеся строки в R
Как сгруппировать и суммировать данные в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.