<?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: Cumulative Sum in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409630#M100073</link>
    <description>&lt;P&gt;It seems that you want:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; by area;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; retain cumvalue;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first.area then cumvalue = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;cumvalue + value;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if last.area then output;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
    <pubDate>Wed, 01 Nov 2017 21:06:53 GMT</pubDate>
    <dc:creator>Shmuel</dc:creator>
    <dc:date>2017-11-01T21:06:53Z</dc:date>
    <item>
      <title>Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409610#M100070</link>
      <description>&lt;P&gt;Hello, I would like my data to look something like this:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;FONT color="#ffffff" face="Arial" size="3"&gt;Area&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ffffff" face="Arial" size="3"&gt;Value&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ffffff" face="Arial" size="3"&gt;CumValue&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;A&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;45&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;A&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;45&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;A&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;15&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;45&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;A&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;20&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;45&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;B&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;10&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;10&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;C&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;D&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;10&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;25&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;D&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;25&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;D&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT face="Arial" size="3"&gt;25&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I currently have:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;By area;&lt;/P&gt;&lt;P&gt;if first.area then value = 0;&lt;/P&gt;&lt;P&gt;cumvalue + value;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've seen code that condenses all of them and spits it out so that I would only have 4 rows&amp;nbsp;(A,B,C,D) but I would like to keep each row and have each equal to the last value.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Nov 2017 19:44:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409610#M100070</guid>
      <dc:creator>scouttier</dc:creator>
      <dc:date>2017-11-01T19:44:36Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409630#M100073</link>
      <description>&lt;P&gt;It seems that you want:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; by area;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; retain cumvalue;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first.area then cumvalue = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;cumvalue + value;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if last.area then output;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Nov 2017 21:06:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409630#M100073</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-11-01T21:06:53Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409637#M100075</link>
      <description>&lt;P&gt;Thanks for the reply!!&lt;BR /&gt;&lt;BR /&gt;Two questions -&lt;BR /&gt;&lt;BR /&gt;Why isn't it&amp;nbsp; - - if first.area then cumvalue = 0; (edit - just realized I have it like that in my op : O)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I believe that code removes duplicates and condenses each area into one. I would like each area to remain and have the final cumulative value.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Nov 2017 20:50:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409637#M100075</guid>
      <dc:creator>scouttier</dc:creator>
      <dc:date>2017-11-01T20:50:42Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409638#M100076</link>
      <description>&lt;P&gt;The easiest way is to summarize the data and merge it back in.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This example adds the average, but you can do the same for the sum.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/statgeek/SAS-Tutorials/blob/master/add_average_value_to_dataset.sas" target="_blank"&gt;https://github.com/statgeek/SAS-Tutorials/blob/master/add_average_value_to_dataset.sas&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Nov 2017 20:49:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409638#M100076</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-11-01T20:49:36Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409644#M100080</link>
      <description>You are right, it should be cumvalue=0.&lt;BR /&gt;It was a typo.</description>
      <pubDate>Wed, 01 Nov 2017 21:07:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409644#M100080</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-11-01T21:07:37Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409696#M100109</link>
      <description>&lt;P&gt;You can interleave dataset HAVE with itself, using a BY AREA statement to force the interleaving.&amp;nbsp; Each AREA is read twice, the first time building the cumvalue, and the second time outputting&amp;nbsp; the cumvalue:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input area $ value;
datalines;
A 5  
A 5  
A 15  
A 20  
B 10  
C 5  
D 10  
D 5  
D 5  
run;

data want;
  set have (in=firstpass) have;
  by area;
  if first.area then cumvalue=value;
  else if firstpass then cumvalue+value;
  if firstpass=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 02 Nov 2017 03:13:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409696#M100109</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2017-11-02T03:13:59Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409816#M100147</link>
      <description>&lt;PRE&gt;

data have;
  input area $ value;
datalines;
A 5  
A 5  
A 15  
A 20  
B 10  
C 5  
D 10  
D 5  
D 5  
;
run;

proc sql;
select *,sum(value) as sum
 from have
  group by area;
quit;

&lt;/PRE&gt;</description>
      <pubDate>Thu, 02 Nov 2017 13:33:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/409816#M100147</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-11-02T13:33:00Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/410114#M100233</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/175107"&gt;@scouttier&lt;/a&gt;:&lt;/P&gt;&lt;P&gt;If you want to do it in one data step, this will work:&lt;/P&gt;&lt;PRE&gt;data want;
  do until(last.area);
    set have;
    by area;
    cumvalue+value; /* this is a SUM statement */
    end;
  do until(last.area);
    set have;
    by area;
    output;
    end;
  cumvalue=0; /* cumvalue is retained because of SUM statement */
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 03 Nov 2017 08:27:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/410114#M100233</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2017-11-03T08:27:05Z</dc:date>
    </item>
    <item>
      <title>Re: Cumulative Sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/410255#M100260</link>
      <description>&lt;P&gt;Thanks so much - I was trying to merge it back in, but this works so much better!&lt;/P&gt;</description>
      <pubDate>Fri, 03 Nov 2017 14:46:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cumulative-Sum/m-p/410255#M100260</guid>
      <dc:creator>scouttier</dc:creator>
      <dc:date>2017-11-03T14:46:33Z</dc:date>
    </item>
  </channel>
</rss>

