MathGroup Archive 2009

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

Search the Archive

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}}



  • Prev by Date: Re: Text and multiple calculations in an IF condition
  • Next by Date: Re: compress lists with mean for equal elements
  • Previous by thread: Re: compress lists with mean for equal elements
  • Next by thread: Re: compress lists with mean for equal elements