<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to calulate a cumulative sum for each observation by id in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711185#M219030</link>
    <description>&lt;P&gt;Exactly!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes it works, thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have a good day!&lt;/P&gt;</description>
    <pubDate>Wed, 13 Jan 2021 16:34:41 GMT</pubDate>
    <dc:creator>ZSB</dc:creator>
    <dc:date>2021-01-13T16:34:41Z</dc:date>
    <item>
      <title>How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711026#M218961</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;My problem is about&lt;SPAN&gt;&amp;nbsp;calculating the cumulative sum for each id and for each date taking into account a sliding period of 15 previous days. If the cumulative sum exceeds 10k, the variable top is incremented.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The treatment is done for June only.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is an example of the desired result :&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;app_date&lt;/TD&gt;&lt;TD&gt;price&lt;/TD&gt;&lt;TD&gt;cum&lt;/TD&gt;&lt;TD&gt;top&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;29-juin-20&lt;/TD&gt;&lt;TD&gt;4000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 000&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;13-juin-20&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45 000&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;13-juin-20&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40 000&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;11-juin-20&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34 000&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10-juin-20&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 27 000&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01-juin-20&lt;/TD&gt;&lt;TD&gt;9000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 19 000&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;30-mai-20&lt;/TD&gt;&lt;TD&gt;10000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 000&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;proc sort data = tab out= tab1;&lt;BR /&gt;by id descending app_date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data tab2;&lt;/P&gt;&lt;P&gt;set tab1;&lt;/P&gt;&lt;P&gt;%let annee=2020;&lt;/P&gt;&lt;P&gt;%let month=06;&lt;/P&gt;&lt;P&gt;by&amp;nbsp; id;&lt;/P&gt;&lt;P&gt;retain last_date date_last_d CUM;&lt;/P&gt;&lt;P&gt;if first.id then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last_date =app_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date_last_dem = app_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CUM=&lt;STRONG&gt;0&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if month(date_last_d) =&amp;amp;month. then do ;&lt;/P&gt;&lt;P&gt;diff= date_last_d -app_date;&lt;/P&gt;&lt;P&gt;CUM= price+ CUM;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if diff&amp;gt;15 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; diff = &lt;STRONG&gt;.&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CUM =&lt;STRONG&gt;.&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last_date =app_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date_last_d = app_date;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if last.id and CUM&amp;gt;&lt;STRONG&gt;10000&lt;/STRONG&gt;&amp;nbsp;then top= top+&lt;STRONG&gt;1&lt;/STRONG&gt; ;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;last_date=app_date;&lt;/P&gt;&lt;P&gt;format last_date DDMMYY10.;&lt;/P&gt;&lt;P&gt;format date_last_d DDMMYY10.;&lt;/P&gt;&lt;P&gt;format CUM&amp;nbsp;&lt;STRONG&gt;14.2&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I can do it for the first iteration but I cannot do it for all the lines.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thank you,&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 10:26:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711026#M218961</guid>
      <dc:creator>ZSB</dc:creator>
      <dc:date>2021-01-13T10:26:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711028#M218962</link>
      <description>&lt;P&gt;Why does cum start at 4000 but jump to 45000?&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 10:32:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711028#M218962</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-13T10:32:36Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711040#M218966</link>
      <description>&lt;P&gt;Thanks for sharing code and the expected output, but to fully understand the problem, i need to see the dataset tab1 (usable form preferred).&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 11:34:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711040#M218966</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2021-01-13T11:34:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711050#M218967</link>
      <description>&lt;P&gt;There is a sample of data tab1 :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Cnt&lt;/TD&gt;&lt;TD&gt;Price&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;App_date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2265&lt;/TD&gt;&lt;TD&gt;534&lt;/TD&gt;&lt;TD&gt;30/05/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2330&lt;/TD&gt;&lt;TD&gt;4594&lt;/TD&gt;&lt;TD&gt;27/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1360&lt;/TD&gt;&lt;TD&gt;723&lt;/TD&gt;&lt;TD&gt;14/05/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1393&lt;/TD&gt;&lt;TD&gt;723&lt;/TD&gt;&lt;TD&gt;14/05/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;2400&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;12/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;2411&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;12/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2400&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;11/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;2400&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;11/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;2527&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;10/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;2536&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;10/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;2458&lt;/TD&gt;&lt;TD&gt;101666&lt;/TD&gt;&lt;TD&gt;04/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;2758&lt;/TD&gt;&lt;TD&gt;1088&lt;/TD&gt;&lt;TD&gt;30/05/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;4412&lt;/TD&gt;&lt;TD&gt;1056&lt;/TD&gt;&lt;TD&gt;13/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;1870&lt;/TD&gt;&lt;TD&gt;1255&lt;/TD&gt;&lt;TD&gt;30/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;4198&lt;/TD&gt;&lt;TD&gt;1255&lt;/TD&gt;&lt;TD&gt;14/05/2020&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;For example, for the id 101666 the top should be equal to 3.&lt;/P&gt;&lt;P&gt;Iteration 1 : from cnt5 to cnt11--&amp;gt; CUM&amp;gt;10k and top=1&lt;/P&gt;&lt;P&gt;Iteration 2 : from cnt6 to cnt11--&amp;gt; CUM&amp;gt;10k and top=2&lt;/P&gt;&lt;P&gt;Iteration 3 : from cnt7 to cnt11--&amp;gt; CUM&amp;gt;10k and top=3&lt;/P&gt;&lt;P&gt;Note that for each iteration, i calculate the CUM over a period of 15 days.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 12:18:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711050#M218967</guid>
      <dc:creator>ZSB</dc:creator>
      <dc:date>2021-01-13T12:18:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711063#M218972</link>
      <description>&lt;P&gt;How about&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Cnt Price ID App_date :ddmmyy10.;
format App_date ddmmyy10.;
datalines;
1  2265 534    30/05/2020
2  2330 4594   27/06/2020
3  1360 723    14/05/2020
4  1393 723    14/05/2020
5  2400 101666 12/06/2020
6  2411 101666 12/06/2020
7  2400 101666 11/06/2020
8  2400 101666 11/06/2020
9  2527 101666 10/06/2020
10 2536 101666 10/06/2020
11 2458 101666 04/06/2020
12 2758 1088   30/05/2020
13 4412 1056   13/06/2020
14 1870 1255   30/06/2020
15 4198 1255   14/05/2020
;

data want(drop = c p dt);

   dcl hash h(ordered : "Y");
   h.definekey("c");
   h.definedata("p", "dt");
   h.definedone();
   dcl hiter i("h");

   do c = 1 by 1 until (last.ID);
      set have(rename=(App_Date=dt Price=p));
      by ID notsorted;
      h.add();
   end;

   do until (last.ID);
      set have;
      by ID notsorted;
      cum = 0;
      do while (i.next() = 0);
         if App_Date - 15 &amp;lt;= dt &amp;lt;= App_Date then cum + p;
      end;
      if cum &amp;gt; 10000 then top + 1;
      else top = .;
      output;
   end;

   h.clear();
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Cnt  ID      Price  App_date    cum    top 
1    534     2265   30/05/2020  2265   . 
2    4594    2330   27/06/2020  2330   . 
3    723     1360   14/05/2020  2753   . 
4    723     1393   14/05/2020  2753   . 
5    101666  2400   12/06/2020  17132  1 
6    101666  2411   12/06/2020  17132  2 
7    101666  2400   11/06/2020  12321  3 
8    101666  2400   11/06/2020  12321  4 
9    101666  2527   10/06/2020  7521   . 
10   101666  2536   10/06/2020  7521   . 
11   101666  2458   04/06/2020  2458   . 
12   1088    2758   30/05/2020  2758   . 
13   1056    4412   13/06/2020  4412   . 
14   1255    1870   30/06/2020  1870   . 
15   1255    4198   14/05/2020  4198   . &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 13:02:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711063#M218972</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-13T13:02:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711149#M219009</link>
      <description>&lt;P&gt;thank you very much for your answer.&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Indeed, in terms of treatment, that's exactly what it is expected.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;But, for the id 101666, top must be stopped at 3.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The first iteration, CUM = 2400+2411+2400+2400+2527+2536+2458 = 17131&amp;gt;10000 --&amp;gt; top=1&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The second iteration, CUM =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;2411+2400+2400+2527+2536+2458 = 14732&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;10000&amp;nbsp; --&amp;gt; top=2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The third iteration, CUM =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;2400+2400+2527+2536+2458 = 12321&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;&amp;gt;10000 --&amp;gt; top=3&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The fourth one,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;CUM =&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;+2400+2527+2536+2458 = 12321&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;&amp;lt;10000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 15:10:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711149#M219009</guid>
      <dc:creator>ZSB</dc:creator>
      <dc:date>2021-01-13T15:10:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711164#M219016</link>
      <description>&lt;P&gt;I interpret your correction like this: For ID 101666, you want all prices to be involved in the calculation of &lt;STRONG&gt;cum&amp;nbsp;&lt;/STRONG&gt;in the first iteration. However, for the second iteration, the first value should not be included, even though the date range is the same as the one above. Correct?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In that case, it is a small correction. Let me know if it works for you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Cnt Price ID App_date :ddmmyy10.;
format App_date ddmmyy10.;
datalines;
1  2265 534    30/05/2020
2  2330 4594   27/06/2020
3  1360 723    14/05/2020
4  1393 723    14/05/2020
5  2400 101666 12/06/2020
6  2411 101666 12/06/2020
7  2400 101666 11/06/2020
8  2400 101666 11/06/2020
9  2527 101666 10/06/2020
10 2536 101666 10/06/2020
11 2458 101666 04/06/2020
12 2758 1088   30/05/2020
13 4412 1056   13/06/2020
14 1870 1255   30/06/2020
15 4198 1255   14/05/2020
;

data want(drop = c k p dt);

   dcl hash h(ordered : "Y");
   h.definekey("c");
   h.definedata("c", "p", "dt");
   h.definedone();
   dcl hiter i("h");

   do c = 1 by 1 until (last.ID);
      set have(rename=(App_Date=dt Price=p));
      by ID notsorted;
      h.add();
   end;

   do k = 1 by 1 until (last.ID);
      set have;
      by ID notsorted;
      cum = 0;
      do while (i.next() = 0);
         if App_Date - 15 &amp;lt;= dt &amp;lt;= App_Date &amp;amp; k &amp;lt;= c then cum + p;
      end;
      if cum &amp;gt; 10000 then top + 1;
      else top = .;
      output;
   end;

   h.clear();
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Cnt  ID      Price  App_date    cum    top 
1    534     2265   30/05/2020  2265   . 
2    4594    2330   27/06/2020  2330   . 
3    723     1360   14/05/2020  2753   . 
4    723     1393   14/05/2020  1393   . 
5    101666  2400   12/06/2020  17132  1 
6    101666  2411   12/06/2020  14732  2 
7    101666  2400   11/06/2020  12321  3 
8    101666  2400   11/06/2020  9921   . 
9    101666  2527   10/06/2020  7521   . 
10   101666  2536   10/06/2020  4994   . 
11   101666  2458   04/06/2020  2458   . 
12   1088    2758   30/05/2020  2758   . 
13   1056    4412   13/06/2020  4412   . 
14   1255    1870   30/06/2020  1870   . 
15   1255    4198   14/05/2020  4198   . &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 16:09:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711164#M219016</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-13T16:09:02Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711169#M219020</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/363772"&gt;@ZSB&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;thank you very much for your answer.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Indeed, in terms of treatment, that's exactly what it is expected.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;But, for the id 101666, top must be stopped at 3.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The first iteration, CUM = 2400+2411+2400+2400+2527+2536+2458 = 17131&amp;gt;10000 --&amp;gt; top=1&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The second iteration, CUM =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;2411+2400+2400+2527+2536+2458 = 14732&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;10000&amp;nbsp; --&amp;gt; top=2&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The third iteration, CUM =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;2400+2400+2527+2536+2458 = 12321&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;&amp;gt;10000 --&amp;gt; top=3&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The fourth one,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;CUM =&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;+2400+2527+2536+2458 = 12321&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;&amp;lt;10000&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I don't see anything in your original post about "top must be stopped at 3".&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;My problem is about calculating the cumulative sum for each id and for each date taking into account a sliding period of 15 previous days. If the cumulative sum exceeds 10k, the variable top is incremented.&lt;/P&gt;
&lt;P&gt;The treatment is done for June only.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have a bunch of arbitrary rules like that not shared yet? Such as possibly the "top" gets reset for each calendar month (or other period)? Not providing all the requirements up front complicates things because it may be the additional information requires a different approach.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just for an example of something else not explicitly covered, you say " exceeds 10k," What would you have the result be if a single value added resulted in a sum of much more than 10K? Such as 100 + 100000? That crosses multiple 10K boundaries.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And do you have any negative values? If you do, would they be subtracted from the cumulative total or not?&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 16:05:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711169#M219020</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2021-01-13T16:05:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711185#M219030</link>
      <description>&lt;P&gt;Exactly!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes it works, thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have a good day!&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 16:34:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711185#M219030</guid>
      <dc:creator>ZSB</dc:creator>
      <dc:date>2021-01-13T16:34:41Z</dc:date>
    </item>
    <item>
      <title>Re: How to calulate a cumulative sum for each observation by id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711205#M219040</link>
      <description>&lt;P&gt;Thank you for answer!&lt;/P&gt;&lt;P&gt;I have already the solution for my problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 16:55:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calulate-a-cumulative-sum-for-each-observation-by-id/m-p/711205#M219040</guid>
      <dc:creator>ZSB</dc:creator>
      <dc:date>2021-01-13T16:55:23Z</dc:date>
    </item>
  </channel>
</rss>

