将2个数据框与匹配的列名合并;每个匹配的列彼此相邻

时间:2015-03-23 21:48:05

标签: r merge dataframe

我希望合并两个具有相同长度和列名的数据框,使我可以将具有相同名称的列的值彼此相邻。

一个简单的例子

ex1<-data.frame( c(1:5), c(2:6), c(9:13) )
ex2<-data.frame( c(12:16), c(23:27), c(100:104) )
colnames(ex1)=c("a","b","c")
colnames(ex2)=c("a","b","c")

这会给出

> ex1
  a b  c
1 1 2  9
2 2 3 10
3 3 4 11
4 4 5 12
5 5 6 13

> ex2
   a  b   c
1 12 23 100
2 13 24 101
3 14 25 102
4 15 26 103
5 16 27 104

我想要的是:

> comb_ex
  a  a b  b  c   c
1 1 12 2 23  9 100
2 2 13 3 24 10 101
3 3 14 4 25 11 102
4 4 15 5 26 12 103
5 5 16 6 27 13 104

此外,一旦数据框合并,我怎么能重命名列,保留其原始名称,但添加一个索引,以便我可以确定这些值来自哪个数据框?

> comb_ex
  a1 a2 b1 b2 c1  c2
1  1 12  2 23  9 100
2  2 13  3 24 10 101
3  3 14  4 25 11 102
4  4 15  5 26 12 103
5  5 16  6 27 13 104

1 个答案:

答案 0 :(得分:1)

这似乎是不言自明的。请查看?cbind.data.frame?make.unique?'names<-'?"["的帮助页面,以获取进一步说明。

> comb <- cbind(ex1,ex2)
> names(comb) <- make.unique(names(comb))
> comb[sort(names(comb))]
  a a.1 b b.1  c c.1
1 1  12 2  23  9 100
2 2  13 3  24 10 101
3 3  14 4  25 11 102
4 4  15 5  26 12 103
5 5  16 6  27 13 104