2014-07-04 107 views
0

我有两个相同的数据帧。相同的列和行标题。一个有相关性,一个有p值。我想以交错的方式合并这两个表,所以第一列是相关性,下一个p值,下一个相关性等。合并与交错数据帧在r

所以如果表1的列是A1,A2,A3 ...和表2是B1,B2,B3 ...我想结束表是A1,B1,A2,B2,A3,B3 ....

我试过cbind,但是这把所有相关列首先是所有的p值列。没有交错。

我想知道是否有简单的方法。

感谢您的帮助!

+4

[本Q/A](http://stackoverflow.com/questions/16443260/interleave-lists-in-r)应该是有帮助的。 –

回答

3

你得到了第一步权,这是cbind ing。假设您的数据帧为d1,其中第n列为A1, A2, ...,And1,第n列为B1, B2, ..., Bn。然后d <- cbind(d1, d2) 会给你包含你想要的所有信息的数据框,而你只需要重新排列它的列。这相当于生成向量(1,(n + 1),2,(n + 2),...,n,2n)以索引数据帧列。你可以这样做s <- rep(1:n, each = 2) + (0:1) * n。最后,你想要的数据帧是d[s]

+0

出色地工作 - 非常感谢! – user3801778

0

此外,如果尺寸是相同的,创建索引

rbind(colnames(dataframe1), colnames(dataframe2)) 

例如:

set.seed(1) 
d1 <- setNames(as.data.frame(matrix(sample(1:10,20, replace=T),5,5)), paste0("A",1:5)) 
d2 <- setNames(as.data.frame(matrix(sample(1:10,20, replace=T),5,5)), paste0("B",1:5)) 

d <- cbind(d1,d2) 

indx <- rbind(names(d1),names(d2)) 

    d[,indx] 
# A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 
#1 3 10 9 4 3 5 5 7 3 10 
#2 4 3 10 1 2 6 8 8 4 3 
#3 6 7 7 4 7 5 10 2 6 7 
#4 10 2 7 9 4 2 4 8 10 2 
#5 3 3 1 4 8 9 8 5 3 3