Re: How can I totalize by month, by year?
- To: mathgroup at smc.vnet.net
- Subject: [mg111913] Re: How can I totalize by month, by year?
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Wed, 18 Aug 2010 07:07:25 -0400 (EDT)
With version 7, 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.}}}; By day {#[[1, 1]], Total[#[[All, 2]]]} & /@ GatherBy[data[[1]], Take[#[[1]], 3] &] {{{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.}} By month {#[[1, 1]], Total[#[[All, 2]]]} & /@ GatherBy[data[[1]], Take[#[[1]], 2] &] {{{2010, 8, 3, 0, 0, 0.}, 146.}, {{2010, 7, 30, 0, 0, 0.}, 262.}} If your data is always sorted (or if you sort it), you could alternatively use SplitBy in place of GatherBy. You will need to wrap the result in list brackets if you actually need the additional list brackets shown in your example and input. Bob Hanlon ---- Leandro Tenfen <leandrotenfen 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