I am in kind of a pickle. I have multiple matrices and want to sort the first column of a matrix by the last column of the previous matrix. Any ideas? I have tried apply, order, sort, etc.
########################################################
######################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!!!!!
What I want to do is sort three by 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
It's unclear exactly what you're after, but if you are looking for the last column of each matrix to "match up" with the first column of the next, you can combine order
and rank
like this:
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.