Re: compress lists with mean for equal elements

• To: mathgroup at smc.vnet.net
• Subject: [mg101016] Re: [mg100987] compress lists with mean for equal elements
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Sun, 21 Jun 2009 07:04:14 -0400 (EDT)
• References: <200906200046.UAA00844@smc.vnet.net>

```On 20 Jun 2009, at 09:46, 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.
>
> The problem is that there is no fixed number for the equal elements
> (so e.g. two elements with {1,13}, three elements with {1,14} and so
> on). The number is random.
>
> Can anybody please provide me with a statement or hint how to
>
> Thank you very much
>
> Regards,
> Holger
>

In Mathematica 7 you can do this with:

ls={{{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}}

({#1[[1, 1]], Mean[#1[[All, 2]]]} & ) /@ GatherBy[ls, First]

{{{1, 13}, 97.80019999999999}, {{1, 14}, 99.4599},
{{1, 15}, 101.15975}, {{1, 16}, 101.7025}}

Andrzej Kozlowski

```

• Prev by Date: Re: Slow performance gathering property data from fitted
• Next by Date: When to use Module inside Manipulate
• Previous by thread: compress lists with mean for equal elements
• Next by thread: Re: compress lists with mean for equal elements