Re: Sorting on multiple columns within a matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg57856] Re: Sorting on multiple columns within a matrix
- From: János <janos.lobb at yale.edu>
- Date: Fri, 10 Jun 2005 02:29:19 -0400 (EDT)
- References: <200506090918.FAA28665@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Jun 9, 2005, at 5:18 AM, 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
>
The solution to it is in the Help under the Sort examples. Here it
is for this case:
In[1]:=
mm = {{"Z", 2, "a"},
{"A", 2, "k"}, {"Z", 1,
"z"}, {"A", 1, "a"},
{"Z", 3, "k"}, {"A", 3,
"z"}};
In[2]:=
ColumnForm[mm]
Out[2]=
{"Z", 2, "a"}
{"A", 2, "k"}
{"Z", 1, "z"}
{"A", 1, "a"}
{"Z", 3, "k"}
{"A", 3, "z"}
In[15]:=
nn = mm[[Ordering[mm[[All,
{2, 1}]]]]];
In[16]:=
ColumnForm[nn]
Out[16]=
{"A", 1, "a"}
{"Z", 1, "z"}
{"A", 2, "k"}
{"Z", 2, "a"}
{"A", 3, "z"}
{"Z", 3, "k"}
János
- References:
- Sorting on multiple columns within a matrix
- From: Lee Newman <leenewm@umich.edu>
- Sorting on multiple columns within a matrix