2014-07-04 104 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