Часто вас может заинтересовать объединение нескольких фреймов данных в 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