如何从数据帧列表中添加一个数据帧
How to add put together a single dataframe from a list of dataframes
我有一个数据框列表,我想将这些列放在一起。
为了说明这里有一个虚拟集:
Data1 <- data.frame(A = c(1, 2, 3, 4, 5),
B = c(2, 3, 5, 3, 10))
Data2 <- data.frame(A = c(1, 2, 3, 4, 6),
C = c(3, 4, 8, 12, 2))
Data3 <- data.frame(A = c(1, 2, 3, 4, 6),
D = c(4, 3, 1, 9, 2))
list <- list(Data1, Data2, Data3)
我希望输出如下所示:
A B C D
1 2 3 4
2 3 4 3
3 5 8 1
4 3 12 9
5 10 NA NA
6 NA 2 2
我的真实数据列表中有很多数据帧,我有很多列表,所以我希望代码不必明确说明数据帧的名称,这我一直在使用 merge() 函数。
谢谢!
我们可以使用 reduce
和 full_join
library(dplyr)
library(purrr)
reduce(list, full_join, by = 'A')
如果有很多list
,将它们全部放在一个list
中,循环遍历list
,然后使用reduce
map(list(list1, list2, list3, ..., listn), ~ reduce(.x, full_join, by = 'A'))
可以使用 mget
自动将 list
放入 list
map(mget(ls(pattern = '^list\d+$')), ~ reduce(.x, full_join, by = 'A'))
在这里,我们假设 list
的名称为 list1
、list2
等
我有一个数据框列表,我想将这些列放在一起。 为了说明这里有一个虚拟集:
Data1 <- data.frame(A = c(1, 2, 3, 4, 5),
B = c(2, 3, 5, 3, 10))
Data2 <- data.frame(A = c(1, 2, 3, 4, 6),
C = c(3, 4, 8, 12, 2))
Data3 <- data.frame(A = c(1, 2, 3, 4, 6),
D = c(4, 3, 1, 9, 2))
list <- list(Data1, Data2, Data3)
我希望输出如下所示:
A B C D
1 2 3 4
2 3 4 3
3 5 8 1
4 3 12 9
5 10 NA NA
6 NA 2 2
我的真实数据列表中有很多数据帧,我有很多列表,所以我希望代码不必明确说明数据帧的名称,这我一直在使用 merge() 函数。
谢谢!
我们可以使用 reduce
和 full_join
library(dplyr)
library(purrr)
reduce(list, full_join, by = 'A')
如果有很多list
,将它们全部放在一个list
中,循环遍历list
,然后使用reduce
map(list(list1, list2, list3, ..., listn), ~ reduce(.x, full_join, by = 'A'))
可以使用 mget
list
放入 list
map(mget(ls(pattern = '^list\d+$')), ~ reduce(.x, full_join, by = 'A'))
在这里,我们假设 list
的名称为 list1
、list2
等