Re: compress lists with mean for equal elements
- To: mathgroup at smc.vnet.net
- Subject: [mg101024] Re: compress lists with mean for equal elements
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Sun, 21 Jun 2009 07:05:46 -0400 (EDT)
On 6/19/09 at 8:46 PM, ephorie at gmail.com (vJD) wrote:
>I have a nested list of this form:
>{{{1, 13}, 97.6493}, {{1, 13}, 97.9511}, {{1, 14}, 99.3002}, {{1,
>14}, 99.4602}, {{1, 14}, 99.6193}, {{1, 15}, 100.513}, {{1, 15},
>101.149}, {{1, 15}, 101.483}, {{1, 15}, 101.494}, {{1, 16}, 101.51},
>{{1, 16}, 101.895}}
>I want to shrink the list in the way that I calculate the mean over
>the second part for all elements where the first part is equal. so
>e.g. the first element of the new list will be {{1,13}, 97.8002},
>because they both have {1,13} and the mean of 97.6493 and 97.9511 is
>97.8002.
Here is one way
In[23]:= data = {{{1, 13}, 97.6493}, {{1, 13}, 97.9511}, {{1, 14},
99.3002}, {{1, 14}, 99.4602}, {{1, 14}, 99.6193}, {{1, 15},
100.513}, {{1, 15}, 101.149}, {{1, 15}, 101.483}, {{1, 15},
101.494}, {{1, 16}, 101.51}, {{1, 16}, 101.895}};
In[24]:= {#[[1, 1]], Mean[#[[All, 2]]]} & /@ SplitBy[data, First]
Out[24]= {{{1, 13}, 97.80019999999999}, {{1, 14}, 99.4599},
{{1, 15}, 101.15975}, {{1, 16}, 101.7025}}