如何只在两个数据帧之间保留相同名称的列?

时间:2015-07-13 14:19:35

标签: r dataframe

我有两个数据框,如下所示:

a<-c(1,3,4,5,6,8)
b<-c(2,3,4,2,6,7)
c<-c(2,5,6,3,5,6)
df1<-data.frame(a,b,c)
d<-c(3,4,5,6,7,8)
e<-c(1,2,3,2,1,1)
c<-c(1,3,4,5,6,2)
df2<-data.frame(d,e,c)



> df1
  a b c
1 1 2 2
2 3 3 5
3 4 4 6
4 5 2 3
5 6 6 5
6 8 7 6
> df2
  d e c
1 3 1 1
2 4 2 3
3 5 3 4
4 6 2 5
5 7 1 6
6 8 1 2

我希望合并两个数据框,并且只保留具有相同名称的列。最终的数据框应该是这样的:

> df3
  c1 c2
1  2  1
2  5  3
3  6  4
4  3  5
5  5  6
6  6  2

我的真实数据框有数百列,所以我需要代码完成这项工作。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

找出属于两个数据帧的名称然后绑定它们:

eqnames <- names(df1)[names(df1) %in% names(df2)]

df3 <- cbind(df1[eqnames], df2[eqnames])

然后,您可以重命名列:

names(df3) <- paste0(names(df3), 1:ncol(df3))

导致:

> df3
  c1 c2
1  2  1
2  5  3
3  6  4
4  3  5
5  5  6
6  6  2