Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

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

Search the Archive

Re: Sorting paired columns of dates and values

  • To: mathgroup at smc.vnet.net
  • Subject: [mg106710] Re: Sorting paired columns of dates and values
  • From: Bill Rowe <readnews at sbcglobal.net>
  • Date: Thu, 21 Jan 2010 04:56:33 -0500 (EST)

On 1/20/10 at 6:49 AM, warsaw95826 at mypacks.net (Garapata) wrote:

>I've imported a large flat file of dates and values in a structure
>like this:

>data = {{1/3/1984,997.5,1/5/1970,2402.85,1/2/1961,536.3},
>{1/4/1984,998.6,1/6/1970,2406.22,1/3/1961,527.2},
>{1/5/1984,1015.8,1/7/1970,2394.96,1/4/1961,527.4},
>{1/6/1984,1029,1/8/1970,2283.68,1/5/1961,531.2},
>{1/9/1984,1034.6,1/9/1970,2359,1/6/1961,526.4}...}

>The above example has 3 columns of dates.  Each date column has a
>matching column of values immediately to its right.

>As seen above, each of the date columns starts with a different
>date.

>Not seen, each date and value paired column has a final value on the
>same date: 12/31/2009.

>I want to sort each of the date and value paired columns in a
>descending order by its date column, so that my first row of data
>would all have the 12/31/2009 date.  This should also line up all
>the subsequent rows by descending dates, which would allow me to
>drop all but one of the columns with dates and consolidate the list.

Here is a possible solution. It isn't totally clear to me
precisely how you want the output formated. So, the code below
may well need to be modified.

=46irst, changing your data so that the dates are strings. If this
is not done, the expression 1/3/1984 well get evaluated to
1/5952, something no longer clearly a date.

In[12]:= data = {{"1/3/1984", 997.5, "1/5/1970", 2402.85, "1/2/1961",
     536.3}, {"1/4/1984", 998.6, "1/6/1970", 2406.22, "1/3/1961",
     527.2}, {"1/5/1984", 1015.8, "1/7/1970", 2394.96, "1/4/1961",
     527.4}, {"1/6/1984", 1029, "1/8/1970", 2283.68, "1/5/1961",
     531.2}, {"1/9/1984", 1034.6, "1/9/1970", 2359, "1/6/1961", 526.4}};

In[13]:= Reverse@
  SortBy[Partition[Flatten@data, 2],
   AbsoluteTime[{First@#, {"MonthShort", "/", "DayShort", "/",
       "Year"}}] &]

Out[13]= {{"1/9/1984", 1034.6}, {"1/6/1984", 1029},
    {"1/5/1984", 1015.8}, {"1/4/1984", 998.6},
    {"1/3/1984", 997.5}, {"1/9/1970", 2359},
    {"1/8/1970", 2283.68}, {"1/7/1970", 2394.96},
    {"1/6/1970", 2406.22}, {"1/5/1970", 2402.85},
    {"1/6/1961", 526.4}, {"1/5/1961", 531.2},
    {"1/4/1961", 527.4}, {"1/3/1961", 527.2},
    {"1/2/1961", 536.3}}



  • Prev by Date: Re: Re: Replace list element based on a condition how to
  • Next by Date: Re: Re: Convert string list to number list
  • Previous by thread: Re: Sorting paired columns of dates and values
  • Next by thread: Re: Sorting paired columns of dates and values