Re: List Manipulation- Advanced beginner question
- To: mathgroup at smc.vnet.net
- Subject: [mg121500] Re: List Manipulation- Advanced beginner question
- From: Heike Gramberg <heike.gramberg at gmail.com>
- Date: Sun, 18 Sep 2011 04:08:23 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201109160948.FAA12399@smc.vnet.net>
You could try something like
totlist[lists__List] := Module[{jlist = Join[lists], dates},
dates = DeleteDuplicates[jlist[[All, 1]]];
Transpose[{dates, Total[Cases[jlist, {#, a_} :> a]] & /@ dates}]]
usage:
list1 = {{{2011, 9, 16, 0, 0, 0}, a}, {{2010, 10, 30, 0, 0, 0}, b}, =
{{2009, 7, 5, 0, 0, 0}, c}};
list2 = {{{2011, 9, 16, 0, 0, 0}, 1}, {{2010, 08, 15, 0, 0, 0}, 2}, =
{{2009, 4, 29, 0, 0, 0}, 3}};
totlist[list1, list2]
output:
{{{2011, 9, 16, 0, 0, 0}, 1 + a}, {{2010, 10, 30, 0, 0, 0}, b},
{{2009, 7, 5, 0, 0, 0}, c}, {{2010, 8, 15, 0, 0, 0}, 2},
{{2009, 4, 29, 0, 0, 0}, 3}}
Heike
On 16 Sep 2011, at 11:48, Nguyen Van Falk wrote:
> I am trying to add multiple lists together and am looking for some
> guidance. My data is in the form of multiple time series, with dates
> that overlap one another. I need to merge the lists, add all of the
> values together for the dates that overlap and output a single list
> that only has one entry for each date.
>
> For example, if I have three values for September 15 (8,14,10), I only
> want a single entry for September 15 in the final list with a value of
> 32. The data is in standard date spec form: { {{Date 1}, Value 1},
> {{Date 2}, Value 2}, {{Date 3}, Value 3}, ....... {{Date n}, Value
> n}, }.
>
>
> Thanks,
>
> NVF
>
- References:
- List Manipulation- Advanced beginner question
- From: Nguyen Van Falk <nvanfalk@gmail.com>
- List Manipulation- Advanced beginner question