我希望合并两个具有相同长度和列名的数据框,使我可以将具有相同名称的列的值彼此相邻。
一个简单的例子
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
答案 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