<?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/609895#M177572</link>
    <description>&lt;P&gt;What does your desired result look like here?&lt;/P&gt;</description>
    <pubDate>Fri, 06 Dec 2019 09:31:39 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2019-12-06T09:31:39Z</dc:date>
    <item>
      <title>cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609894#M177571</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ds;
input  x;
datalines;
1
2
3
4
5
-6
-7
-8
-9
;
run;

data t;
set ds;
if x&amp;gt;0 then do 
y=x+x	; 
if x&amp;lt;0 then do
y=x+x;
end;
end;
if x ge 0 then output;
if y le 0	then output;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Here i am trying sum first five numbers and also do sum negivtive numbers in flag variable&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 06 Dec 2019 09:27:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609894#M177571</guid>
      <dc:creator>BrahmanandaRao</dc:creator>
      <dc:date>2019-12-06T09:27:34Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609895#M177572</link>
      <description>&lt;P&gt;What does your desired result look like here?&lt;/P&gt;</description>
      <pubDate>Fri, 06 Dec 2019 09:31:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609895#M177572</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-12-06T09:31:39Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609898#M177574</link>
      <description>&lt;P&gt;HI Draycut&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;i want first 1 to 5 cumulative and also -6 to -9 values cumulative sum&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 06 Dec 2019 09:36:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609898#M177574</guid>
      <dc:creator>BrahmanandaRao</dc:creator>
      <dc:date>2019-12-06T09:36:11Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609903#M177576</link>
      <description>&lt;P&gt;please try&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ds;
input  x;
if x gt 0 then grp=1;
else grp=2;
datalines;
1
2
3
4
5
-6
-7
-8
-9
;
run;

proc sql;
create table want as select sum(x) as sum, grp from ds group by grp;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 06 Dec 2019 10:13:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609903#M177576</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-12-06T10:13:39Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609908#M177578</link>
      <description>&lt;P&gt;Hi &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/265860"&gt;@BrahmanandaRao&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is an alternative method:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ds;
	input x;
	if x&amp;gt;0 then	group=1;
	else if x&amp;lt;0 then group=2;
	datalines;
1
2
3
4
5
-6
-7
-8
-9
;
run;

proc means data=ds sum noprint;
	var x;
	by group;
	output out=t (drop=_type_ _freq_) sum=grand_sum;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 06 Dec 2019 10:43:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609908#M177578</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2019-12-06T10:43:15Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609936#M177590</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data ds;
input  x;
datalines;
1
2
3
4
5
-6
-7
-8
-9
;
run;
/*SQL*/
proc sql;
create table want as
select sum(x) as s
from ds
group by sign(x);
quit;

/*Datastep Hash method*/
data want;
 if _n_=1 then do;
   dcl hash H () ;
   h.definekey  ("_n_") ;
   h.definedata ("sum") ;
   h.definedone () ;
 end;
 set ds end=z;
 if h.find(key:sign(x))=0 then sum=sum(sum,x);
 else sum=x;
 h.replace(key:sign(x),data:sum);
 if z;
 dcl hiter hi('h');
 do while(hi.next()=0);
  output;
 end;
 drop x;
run;
  
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want;
set ds end=z;
if _n_&amp;gt;1 and sign(x) ne lag(sign(x)) then do;
sum=0;
end;
sum+x;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 06 Dec 2019 13:37:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609936#M177590</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-12-06T13:37:37Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609994#M177620</link>
      <description>&lt;P&gt;Somehow this looks like using a sledgehammer to swat a fly.&amp;nbsp; This should be pretty close to the mark:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set have end=done;
   if x &amp;gt; 0 then positive_total + x;
   else negative_total + x;
   if done;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 06 Dec 2019 15:40:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609994#M177620</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2019-12-06T15:40:10Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609996#M177621</link>
      <description>Does this not need a retain statement?</description>
      <pubDate>Fri, 06 Dec 2019 15:43:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609996#M177621</guid>
      <dc:creator>DanielLangley</dc:creator>
      <dc:date>2019-12-06T15:43:50Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609998#M177623</link>
      <description>No, this syntax automatically retains:&lt;BR /&gt;&lt;BR /&gt;Varname + value;</description>
      <pubDate>Fri, 06 Dec 2019 15:51:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/609998#M177623</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2019-12-06T15:51:26Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/610050#M177628</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Somehow this looks like using a sledgehammer to swat a fly.&amp;nbsp; This should be pretty close to the mark:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set have end=done;
   if x &amp;gt; 0 then positive_total + x;
   else negative_total + x;
   if done;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This meets Saint-Exupery's definition of perfection.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Dec 2019 17:25:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-sum/m-p/610050#M177628</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-12-06T17:25:13Z</dc:date>
    </item>
  </channel>
</rss>

