Re: Sorting by date (CORRECTION)
- To: mathgroup at smc.vnet.net
- Subject: [mg72663] Re: [mg72637] Sorting by date (CORRECTION)
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Sun, 14 Jan 2007 04:38:44 -0500 (EST)
- Reply-to: hanlonr at cox.net
Actually my first response was not just slow, it was WRONG. {4,2,1} should have been {4,2,0}, i.e., Sort[data, Last[#1].(10^{4,2,0})<Last[#2].(10^{4,2,0})&] This can also be written Sort[data, FromDigits[Last[#1], 100] < FromDigits[Last[#2], 100] &] Bob Hanlon ---- Bob Hanlon <hanlonr at cox.net> wrote: > A shorter and quicker way than my first approach is data[[Ordering[Last/@data]]] > > data={{3,137.5,13978,{2005,2,8}}, > {3,138.5,12519,{2005,1,4}}, > {3,171.9,15835,{2005,4,12}}, > {3,142.8,17137,{2005,11,19}}, > {3,161.1,18881,{2006,1,18}}, > {3,108.7,20055,{2006,2,28}}, > {3,157,21498,{2006,9,14}}, > {3,118.1,10891,{2004,11,12}}}; > > Timing[Sort[data, Last[#1].(10^{4,2,1})<Last[#2].(10^{4,2,1})&];] > > {0.011517 Second,Null} > > Timing[data[[Ordering[Last/@data]]];] > > {0.000259 Second,Null} > > Sort[data, Last[#1].(10^{4,2,1})<Last[#2].(10^{4,2,1})&]== > data[[Ordering[Last/@data]]] > > True > > > Bob Hanlon > > ---- Bob Hanlon <hanlonr at cox.net> wrote: > > data={{3,137.5,13978,{2005,2,8}}, > > {3,138.5,12519,{2005,1,4}}, > > {3,171.9,15835,{2005,4,12}}, > > {3,142.8,17137,{2005,11,19}}, > > {3,161.1,18881,{2006,1,18}}, > > {3,108.7,20055,{2006,2,28}}, > > {3,157,21498,{2006,9,14}}, > > {3,118.1,10891,{2004,11,12}}}; > > > > Sort[data, Last[#1].(10^{4,2,1})<Last[#2].(10^{4,2,1})&] > > > > {{3,118.1,10891,{2004,11,12}},{3,138.5,12519,{2005,1,4}},{3, > > 137.5,13978,{2005, > > 2,8}},{3,171.9,15835,{2005,4,12}},{3,142.8,17137,{2005,11,19}},{3, > > 161.1,18881,{2006,1,18}},{3,108.7,20055,{2006,2,28}},{ > > 3,157,21498,{2006,9,14}}} > > > > > > Bob Hanlon > > > > ---- Clifford Martin <camartin at snet.net> wrote: > > > Hi All, > > > > > > I have a list of lists that looks like so: > > > > > > > > > {{3, 137.5, 13978, {2005, 2, 8}}, {3, 138.5, 12519, {2005, 1, 4}}, {3, 171.9, 15835, {2005, 4, 12}}, {3, 142.8, 17137, {2005, 11, 19}}, > > > {3, 161.1, 18881, {2006, 1, 18}}, {3, 108.7, 20055, {2006, 2, 28}}, {3, 157, 21498, {2006, 9, 14}}, {3, 118.1, 10891, {2004, 11, 12}}} > > > > > > The last element per vector is a date. I'd like to sort the list so that the vectors are arranged in ascending order of date, i.e. the vector containing {2004,11,12} should be first and and the vector containing {2006,9,14} should be last. Any help would be appreciated. > > > > > > Thanks > > > > > > Cliff > > > -- Bob Hanlon hanlonr at cox.net