Sorting (again!), but with multiple columns
- To: mathgroup at smc.vnet.net
- Subject: [mg50417] Sorting (again!), but with multiple columns
- From: "DIAMOND Mark R." <dot at dot.dot>
- Date: Thu, 2 Sep 2004 04:35:08 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I have read the long 2002 posting on sorting a matrix by column, and I am also familiar with Ted Erseks very fast method using Rotate ... but I still can find quite what I want. I have two related sorting problems ... related in that they both require sorting by multiple columns, and the second problems is a kind of subset of the first. First, I want to sort a (100000 x 3) matrix so that it is sorted firstly on column 2 (ascending order) and then subsorted on column 3 (decending order). I had thought incorrectly, that the evaluation order of And[] would lead the following to work ... I've written the predicate out separately just to make it clearer. tQ23[t1_, t2_] := OrderedQ[{t1[[2]], t2[[2]]}] \[And] OrderedQ[{t2[[3]], t1[[3]]}] t = Table[{i, j, k}, {i, 2}, {j, 2}, {k, 2}]; Sort[t, tQ23] {{1, 1, 2}, {2, 1, 2}, {1, 2, 2}, {2, 2, 2}, {1, 1, 1}, {2, 1, 1}, {1, 2, 1}, {2, 2, 1}} Second, I want to sort a (100000 x 3) matrix so that it is soted first on column 2 (ascending order), then *conditionally* subsorted on column 3, with ascending order if column 2 is Even, and decending if column 2 is Odd. I have no idea how to approach this, except by sorting on column 2, stripping out blocks of rows, and resorting them before appending them to a new list. This is horribly slow. Any suggestions? Any speed-up, or flash of insight would be most appreciated. On a different note, given the ubiquity of sorting, I would have thought that this is an area where a Wolfram time-investment would really pay off. In the late 70s I used to use a CDC-6600 machine that had a superb sorting utility where the sort order, sub-order, and various conditionals were easy to specify and was blindingly fast, at least on straight numeric or character data. -- Mark R. Diamond
- Follow-Ups:
- Re: Sorting (again!), but with multiple columns
- From: DrBob <drbob@bigfoot.com>
- Re: Sorting (again!), but with multiple columns
- From: Sseziwa Mukasa <mukasa@jeol.com>
- Re: Sorting (again!), but with multiple columns