Re: List Manipulation- Advanced beginner question
- To: mathgroup at smc.vnet.net
- Subject: [mg121491] Re: List Manipulation- Advanced beginner question
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Sat, 17 Sep 2011 06:26:14 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
On 9/16/11 at 5:48 AM, nvanfalk at gmail.com (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}, }.
First generate some data in the form you describe:
In[7]:= data =
Join[{{9, 15, 2011}, #} & /@ {8, 14, 10}, {{8, 15, 2011}, #} & /@
RandomInteger[50, 4]]
Out[7]= {{{9, 15, 2011}, 8}, {{9, 15, 2011}, 14}, {{9, 15,
2011}, 10},
{{8, 15, 2011}, 24}, {{8, 15, 2011}, 12}, {{8, 15, 2011}, 32},
{{8, 15, 2011}, 33}}
then sum per date as follows:
In[8]:= {#[[1, 1]], Total[#[[All, 2]]]} & /@ GatherBy[data, First]
Out[8]= {{{9, 15, 2011}, 32}, {{8, 15, 2011}, 101}}