Re: Sum elements in a list with conditions
- To: mathgroup at smc.vnet.net
- Subject: [mg69841] Re: Sum elements in a list with conditions
- From: "Norbert Marxer" <marxer at mec.li>
- Date: Mon, 25 Sep 2006 03:53:00 -0400 (EDT)
- References: <ef5066$mm5$1@smc.vnet.net>
Dear Guillermo
With your data:
a = {{a1, b1}, {a2, b2}, {a2, b3}, {a2, b4}, {a3, b5}, {a3, b6}} ;
You can use:
els = Union@Part[Transpose@a, 1]
sel[x_] := Select[a, (#[[1]] == x) &];
Map[sel[#] &, els]
Map[{#[[1, 1]], Total@Transpose[#][[2]]} &, %]
Explanation:
The first line finds the different first elements (e.g. {a1,a2,a3})
The function sel[x_] selects the rows of a which have x as their first
element.
Then the first Map applies this function for the different first
elements: {a1,a2,a3}
Then the second Map constructs your final matrix with the different
elements in the first column and the sum in the second column.
Best Regards
Norbert Marxer
www.mec.li
Guillermo Sanchez wrote:
> Dear group
> I have a pair of elements list. The second elements of the list should
> be summed when the first element of the pairs are equals. Example
>
> Given
>
> {{a1, b1},{a2,b2},{a2,b3},{a2,b4},{a3, b5}, {a3, b6}}
>
> the output should be
>
> {{a1, b1},{a2, b2+b3+b4},{a3, b5+b6}}
>
> Thanks
>
> Guillermo