2011-01-11 75 views
0

我有三個相同大小的數據幀,我想按特定順序合併,以便我可以使用write.table生成格式化文本文件以供其他程序使用。R按特定順序合併數據幀

我想這一點:

dataframeA_col1 dataframeB_col1 dataframeC_col1 dataframeA_col2 dataframeB_col2 dataframeC_col2等等

不是這個: dataframeA_col1 dataframeA_col2 dataframeB_col1 dataframeB_col2

我開始寫,低於該作品,但只給出了循環我是前3列。我該如何解決這個問題,還是有更好的方法?

temp <- c() 
for(i in length(dataframeA)){ 
temp <- cbind(temp, dataframeA[,i], dataframeB[,i], dataframeC[,i]) 
i <- i+1 
} 

回答

3

好的,這是一個循環,更低的方式:

dfA <- data.frame(col1 = 1:4, col2 = 1:4, col3 = 1:4) 
dfB <- dfA 
dfC <- dfA 
colSeq <- c (matrix(1 : (3*ncol(dfA)), 3, ncol(dfA), byrow = TRUE)) 

其中colSeq是你想要的列順序:

> colSeq 
[1] 1 4 7 2 5 8 3 6 9 

,現在用這個colSeq重新排列cbind(dfA,dfB,dfC)列:

> cbind(A = dfA, B = dfB, C = dfC)[, colSeq ] 
    A.col1 B.col1 C.col1 A.col2 B.col2 C.col2 A.col3 B.col3 C.col3 
1  1  1  1  1  1  1  1  1  1 
2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4 
+0

非常好的答案,比我最初的方法更簡單更優雅。 – Stedy 2011-01-11 01:54:35