Re: Sorting on multiple columns within a matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg57844] Re: Sorting on multiple columns within a matrix
- From: Lee Newman <leenewm at umich.edu>
- Date: Fri, 10 Jun 2005 02:29:08 -0400 (EDT)
- References: <d892lm$sc6$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
dh -- thanks, your solution works, but it seems it might be awkward to
extend it to many more than two columns.
I am wondering if anyone knows a way to generalize dh's solution such
that it could be applied as a pure function to a list which contains the
columns to sort? I noodled over it but was unable to figure it out.
Something like:
Sort[matrix, puresortfunc[#] ]& /@ {1,14,2,4}
where 1,14,2,4 are the columns to use for sorting, and puresortfunc is
this tricky sorting function that would successively map # to the
elements in the list of columns to sort.
Lee
Lee Newman wrote:
> Hello,
>
> I can't come up with a solution to the following simple task:
>
> - I have a matrix, let's M={ {"Z",2,"a"},{"A",2,"k"}, {"Z",1,"z"},
> {"A",1,"a"},{"Z",3,"k"}, {"A",3,"z"} }
> - I want to be able to sort the matrix row-wise, based on multiple
> columns, for example sort first on column 2 (ascending) and then
> secondly on column1 (ascending)
>
> desired result:
> A 1 a
> Z 1 z
> A 2 k
> Z 2 a
> A 3 z
> Z 3 k
>
> I suspect the solution involves using a pure function of some form as
> the second argument in the Sort function, but I can't figure out what
> this function should be.
>
> Thanks,
> Lee
>