У меня есть следующие фреймы данных
df1 <- tibble::as.tibble(list(a = c(1,2,3), d = c(10,11,12) ,id = c("a","b","c")))
df2 <- tibble::as.tibble(list(a = c(4,5,6), e = c(13,14,15) ,id = c("a","b","c")))
df3 <- tibble::as.tibble(list(a = c(7,8,9), f = c(16,17,18) ,id = c("a","b","c")))
Я хочу объединить эти фреймы данных.Поскольку имя столбца a
встречается во всех из них, я буду использовать аргумент suffix
при объединении.
Требуемый результат, который я ищу:
| id | a.df1 | d | a.df2 | e | a.df3 | f |
|----|-------|----|-------|----|-------|----|
| a | 1 | 10 | 4 | 13 | 7 | 16 |
| b | 2 | 11 | 5 | 14 | 8 | 17 |
| c | 3 | 12 | 6 | 15 | 9 | 18 |
Ниже приведен код, который я пробовал
test_list <- list(df1, df2, df3)
names(test_list) <- c("df1", "df2", "df3")
seq_along(temp) %>%
purrr::reduce(
~merge(
temp[[.x]],
temp[[.y]],
suffix = c(names(test_list[.x]), names(test_list[.y])))
Однако это приводит к ошибке, указывающей Error in temp[[.x]] : invalid subscript type 'list
.Почему я не могу выполнить подмножество для фрейма данных в функции слияния
Также есть лучший способ объединить список из нескольких фреймов данных с одинаковыми именами столбцов.