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