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