See also this tip on the R wiki: http://wiki.r-project.org/rwiki/doku.php?id=tips:data-frames:sort
Also available as the orderBy function in the doBy package. Kevin Wright On Wed, May 27, 2009 at 11:19 AM, Linlin Yan <yanlinli...@gmail.com> wrote: > It's a very interesting problem. I just wrote a function for it: > > order.matrix <- function(m, columnsDecreasing = c('1'=FALSE), rows = > 1:nrow(m)) > { > if (length(columnsDecreasing) > 0) > { > col <- as.integer(names(columnsDecreasing[1])); > values <- sort(unique(m[rows, col]), decreasing=columnsDecreasing[1]); > unlist(sapply(values, function(x) order.matrix(m, > columnsDecreasing[-1], which((1:nrow(m) %in% rows) & (m[, > col]==x))))); > } > else > { > rows; > } > } > > For instance: > > m <- matrix( c(2, 1, 1, 3, .5, .3, .5, .2), 4) > > m > [,1] [,2] > [1,] 2 0.5 > [2,] 1 0.3 > [3,] 1 0.5 > [4,] 3 0.2 > > m[order.matrix(m),] > [,1] [,2] > [1,] 1 0.3 > [2,] 1 0.5 > [3,] 2 0.5 > [4,] 3 0.2 > > m[order.matrix(m, c("1"=FALSE, "2"=TRUE)),] > [,1] [,2] > [1,] 1 0.5 > [2,] 1 0.3 > [3,] 2 0.5 > [4,] 3 0.2 > > Any comment is welcome! ;) > > On Wed, May 27, 2009 at 11:04 PM, Linlin Yan <yanlinli...@gmail.com> > wrote: > >> m <- matrix( c(2, 1, 1, 3, .5, .3, .5, .2), 4) > >> m > > [,1] [,2] > > [1,] 2 0.5 > > [2,] 1 0.3 > > [3,] 1 0.5 > > [4,] 3 0.2 > >> m[unlist(sapply(sort(unique(m[,1])), function(x) > which(m[,1]==x)[order(m[(m[,1]==x),2], decreasing=TRUE)])),] > > [,1] [,2] > > [1,] 1 0.5 > > [2,] 1 0.3 > > [3,] 2 0.5 > > [4,] 3 0.2 > > > > On Wed, May 27, 2009 at 8:39 PM, Paul Geeleher <paulgeele...@gmail.com> > wrote: > >> I've got a matrix with 2 columns and n rows. I need to sort it first > >> by the values in column 1 ascending. Then for values which are the > >> same in column 1, sort by column 2 decending. For example: > >> > >> 2 .5 > >> 1 .3 > >> 1 .5 > >> 3 .2 > >> > >> Goes to: > >> > >> 1 .5 > >> 1 .3 > >> 2 .5 > >> 3 .2 > >> > >> This is easy to do in spreadsheet programs but I can't seem to work > >> out how to do it in R and haven't been able to find a solution > >> anywhere. > >> > >> > >> Thanks! > >> > >> -Paul. > >> > >> -- > >> Paul Geeleher > >> School of Mathematics, Statistics and Applied Mathematics > >> National University of Ireland > >> Galway > >> Ireland > >> > >> ______________________________________________ > >> R-help@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-help > >> PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > >> and provide commented, minimal, self-contained, reproducible code. > >> > > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.