Re: How can I totalize by month, by year?
- To: mathgroup at smc.vnet.net
- Subject: [mg111916] Re: How can I totalize by month, by year?
- From: sunt05 <sunting.05 at gmail.com>
- Date: Wed, 18 Aug 2010 07:07:58 -0400 (EDT)
- References: <201006301204.IAA27569@smc.vnet.net> <i4d6av$6r3$1@smc.vnet.net>
On 8=D4=C217=C8=D5, =CF=C2=CE=E71=CA=B122=B7=D6, "Leandro Tenfen" <leandrot= en... at hotmail.com> wrote: > Hi, > > I'm new with Mathematica, I need some help to start it. > > I've got a date series like a cashflow, how can I totalize at each date > change? And how can I totalize by month, by year, etc? > > For example: > > In[]= > > {{{{2010, 8, 3, 0, 0, 0.}, > 65.}, {{2010, 8, 3, 0, 0, 0.}, -72.}, {{2010, 8, 3, 0, 0, 0.}, > 45.}, {{2010, 8, 2, 0, 0, 0.}, 67.}, {{2010, 8, 2, 0, 0, 0.}, > 83.}, {{2010, 8, 2, 0, 0, 0.}, -42.}, {{2010, 7, 30, 0, 0, > 0.}, -32.}, {{2010, 7, 30, 0, 0, 0.}, > 48.}, {{2010, 7, 30, 0, 0, 0.}, 12.}, {{2010, 7, 30, 0, 0, 0.}, > 34.}, {{2010, 7, 29, 0, 0, 0.}, -52.}, {{2010, 7, 29, 0, 0, 0.}, > 78.}, {{2010, 7, 29, 0, 0, 0.}, -26.}, {{2010, 7, 28, 0, 0, 0.}, > 45.}, {{2010, 7, 28, 0, 0, 0.}, -23.}, {{2010, 7, 28, 0, 0, > 0.}, -32.}, {{2010, 7, 28, 0, 0, 0.}, > 74.}, {{2010, 7, 27, 0, 0, 0.}, 53.}, {{2010, 7, 27, 0, 0, 0.}, > 58.}, {{2010, 7, 27, 0, 0, 0.}, 25.}}} > > Out[]= > > {{{{2010, 8, 3, 0, 0, 0.}, 38.}, {{2010, 8, 2, 0, 0, 0.}, > 108.}, {{2010, 7, 30, 0, 0, 0.}, > 28.}, {{2010, 7, 29, 0, 0, 0.}, -10.}, {{2010, 7, 28, 0, 0, 0.}, > 64.}, {{2010, 7, 2, 0, 0, 0.}, 136.}}} > > Thanks > Leandro Tenfen Hi, Just append the following expression (a pure function) to your data: {#[[1, 1]], Total@#[[All, 2]]} & /@ GatherBy[#, First] & i.e.: data = {{{2010, 8, 3, 0, 0, 0.}, 65.}, {{2010, 8, 3, 0, 0, 0.}, -72.}, {{2010, 8, 3, 0, 0, 0.}, 45.}, {{2010, 8, 2, 0, 0, 0.}, 67.}, {{2010, 8, 2, 0, 0, 0.}, 83.}, {{2010, 8, 2, 0, 0, 0.}, -42.}, {{2010, 7, 30, 0, 0, 0.}, -32.}, {{2010, 7, 30, 0, 0, 0.}, 48.}, {{2010, 7, 30, 0, 0, 0.}, 12.}, {{2010, 7, 30, 0, 0, 0.}, 34.}, {{2010, 7, 29, 0, 0, 0.}, -52.}, {{2010, 7, 29, 0, 0, 0.}, 78.}, {{2010, 7, 29, 0, 0, 0.}, -26.}, {{2010, 7, 28, 0, 0, 0.}, 45.}, {{2010, 7, 28, 0, 0, 0.}, -23.}, {{2010, 7, 28, 0, 0, 0.}, -32.}, {{2010, 7, 28, 0, 0, 0.}, 74.}, {{2010, 7, 27, 0, 0, 0.}, 53.}, {{2010, 7, 27, 0, 0, 0.}, 58.}, {{2010, 7, 27, 0, 0, 0.}, 25.}}; {#[[1, 1]], Total@#[[All, 2]]} & /@ GatherBy[#, First] &@data and the result will be: {{{2010, 8, 3, 0, 0, 0.}, 38.}, {{2010, 8, 2, 0, 0, 0.}, 108.}, {{2010, 7, 30, 0, 0, 0.}, 62.}, {{2010, 7, 29, 0, 0, 0.}, 0.}, {{2010, 7, 28, 0, 0, 0.}, 64.}, {{2010, 7, 27, 0, 0, 0.}, 136.}}