MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

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 





  • Prev by Date: Re: How can I totalize by month, by year?
  • Next by Date: Re: How can I totalize by month, by year?
  • Previous by thread: Re: How can I totalize by month, by year?
  • Next by thread: Re: How can I totalize by month, by year?