Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

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



  • Prev by Date: a problem with integrate
  • Next by Date: Re: Sorting by date
  • Previous by thread: Re: a problem with integrate
  • Next by thread: Dashing and PDF