Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将多个数据帧与重合列组合_R_Dataframe - Fatal编程技术网

R 将多个数据帧与重合列组合

R 将多个数据帧与重合列组合,r,dataframe,R,Dataframe,我想将多个数据帧与一些重合的列组合成一个新的数据帧。新数据帧的列应该是重合的列 例如,假设我有数据帧df1、df2、df3: df1: A B C D 1 2 3 4 df2: A C D E 1 2 -1 5 df3: C D F G 0 -1 0 7 New dataframe C D 3 4 2 -1 0 -1 我已尝试以循环方式使用match函数来查找重合列: match(df1,df2) ma

我想将多个数据帧与一些重合的列组合成一个新的数据帧。新数据帧的列应该是重合的列

例如,假设我有数据帧df1、df2、df3:

df1:
A   B   C   D
1   2   3   4

df2:
A   C   D   E
1   2  -1   5

df3:
C   D   F   G
0  -1   0   7

New dataframe
C   D 
3   4 
2  -1
0  -1
我已尝试以循环方式使用match函数来查找重合列:

match(df1,df2)

match(df2,df3)

match(df3,df1)

如果我有很多数据帧,这需要很多时间和线路。有谁能提出更好的方法吗?

一个选项是在
列表中获取数据集,并找到
相交
的列名

library(tidyverse)
lst1 <- mget(paste0("df", 1:3))
nm1 <- map(lst1, names) %>%
          reduce(intersect)    
map_dfr(lst1, ~ .x %>% 
                  select(nm1))
#  C  D
#1 3  4
#2 2 -1
#3 0 -1
数据
df1
nm1 <- Reduce(intersect, lapply(lst1, names))
out <- do.call(rbind, lapply(lst1, subset, select = nm1))
row.names(out) <- NULL
df1 <- structure(list(A = 1L, B = 2L, C = 3L, D = 4L), class = "data.frame", row.names = c(NA, 
-1L))

df2 <- structure(list(A = 1L, C = 2L, D = -1L, E = 5L), class = "data.frame", row.names = c(NA, 
-1L))

df3 <- structure(list(C = 0L, D = -1L, F = 0L, G = 7L), class = "data.frame", row.names = c(NA, 
-1L))