2013-10-10 198 views
0

我是一種泡菜。我有多個矩陣,並希望按照前一個矩陣的最後一列對矩陣的第一列進行排序。有任何想法嗎?我曾嘗試申請,順序,排序等從一個矩陣中排序數據R中的另一個矩陣

######################################################## 
    ######################CODE######################### 
    ### makes indiviual matrix of data ## 
    ## this area would be replaced by read.files 
    one<-matrix(c(2001,2002,2003,2004,23456, 23567,54321,12345),4,2); 
    two<-matrix(c(54321,23567,23456,12345,1234,2345,3456,7777),4,2); 
    three<-matrix(c(3456,7777,2345,1234,5677,6789,6678,6767),4,2); 
    four<-matrix(c(6678,5677,6767,6789,5555,1111,1112,1113),4,2); 
    five<-matrix(c(5555,1113,1112,1111,2222,1212,9999,8888),4,2); 

    #######order all data###################### 
    onea<-one[order(one[,2]),]; 
    twoa<-two[order(two[,1]),]; 
    threea<-three[order(twoa[,2]),]; ####CANT GET THIS PART TO WORK!!!!! 

我想要做的排序是三經twoa [,2]

####output looking for: 
cbind(onea,twoa,threea) 
[,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 2004 12345 12345 7777 7777 6789 
[2,] 2001 23456 23456 3456 3456 5677 
[3,] 2002 23567 23567 2345 2345 6678 
[4,] 2003 54321 54321 1234 1234 6767 
+0

以何種方式是不工作?你爲什麼期望輸出? 'twoa [,2]'是相反的順序,所以當你對'threea'進行排序時,你會顛倒行的順序。 –

+0

大衛嗨,大衛,如果你看看我已經給出了第二列之一的示例代碼是相同的第一列兩個等等。然而,這些數字將失序。每個矩陣代表一個新的數據集。我的實驗需要的是我從一個已知的值開始,爲它分配一個新的數字(一個),然後將一個新的數字分配給一個新的數字。這將使矩陣(兩個)。這將重複,直到實驗結束(五)。我想跟蹤矩陣5的最後一列,並在一個[1,1]中提取與我開始的原始數字相對應的數字。 – Chad

回答

1

目前還不清楚你到底是什麼後,但如果您正在尋找每個矩陣「匹配」下一個的第一列的最後一欄,你可以結合orderrank這樣的:

onea<-one[order(one[,2]),]; 
twoa<-two[order(two[,1])[rank(onea[,2])],]; 
threea<-three[order(three[,1])[rank(twoa[,2])],] 
foura<-four[order(four[,1])[rank(threea[,2])],] 
fivea<-five[order(five[,1])[rank(foura[,2])],] 
cbind(onea,twoa,threea,foura,fivea) 
##  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
## [1,] 2004 12345 12345 7777 7777 6789 6789 1113 1113 1212 
## [2,] 2001 23456 23456 3456 3456 5677 5677 1111 1111 8888 
## [3,] 2002 23567 23567 2345 2345 6678 6678 5555 5555 2222 
## [4,] 2003 54321 54321 1234 1234 6767 6767 1112 1112 9999 
+0

感謝mrip。這就是我想要的!我不知道你可以用這種方式排名。 – Chad

相關問題