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

Merging 2 data frame with matched column names; each matched column next to each other

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

一个简单的例子

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

这似乎不言自明。查看 ?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