<?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: Conditional sum in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658998#M197436</link>
    <description>If you group by row number then you will get the same results as your&lt;BR /&gt;source dataset&lt;BR /&gt;</description>
    <pubDate>Mon, 15 Jun 2020 13:54:12 GMT</pubDate>
    <dc:creator>David_Billa</dc:creator>
    <dc:date>2020-06-15T13:54:12Z</dc:date>
    <item>
      <title>Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658933#M197405</link>
      <description>&lt;P&gt;I've the data as follows. For every record I've to sum of all the records from current observation to till last observation but not from previous observation. Any help?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;VALUE&lt;/P&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Excepted Output:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;VALUE:&lt;/P&gt;
&lt;P&gt;100&lt;/P&gt;
&lt;P&gt;80&lt;/P&gt;
&lt;P&gt;60&lt;/P&gt;
&lt;P&gt;40&lt;/P&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 11:45:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658933#M197405</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T11:45:35Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658937#M197407</link>
      <description>&lt;P&gt;Sort in reverse order, sum with a retained variable, then sort back.&lt;/P&gt;
&lt;P&gt;Or, to avoid the first sort, do this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data sum;
value = 0;
do _n_ = nobs to 1;
  set have (rename=(value=v)) nobs=nobs point=_n_;
  value + v;
  n = _n_;
  output;
end;
stop;
drop v;
run;

proc sort
  data=sum
  out=want (drop=n)
;
by n;
run;
  &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 Jun 2020 11:54:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658937#M197407</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-06-15T11:54:48Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658940#M197409</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 VALUE;
datalines;
20
20
20
20
20
;

data want;
    do until (lr1);
        set have end=lr1;
        s = sum(s, value);
    end;
    output;
    do until (lr2);
        set have(firstobs=2) end=lr2;
        s = s - value;
        output;
    end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 Jun 2020 11:57:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658940#M197409</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-06-15T11:57:31Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658942#M197411</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;Thanks for the code. I want to implement this logic in DI Studio under Expression. Any ways to tackle it in case when Statement or something similar instead of do loop?&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:01:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658942#M197411</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T12:01:06Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658943#M197412</link>
      <description>&lt;P&gt;Alternatively try below code&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input VALUE;
cards;
20
20
20
20
20
;

data want;
do until(end);
set have end=end;
retain sum;
sum+value;
output;
end;
run;

proc sort data=want;
by descending sum value;
run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:06:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658943#M197412</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2020-06-15T12:06:17Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658946#M197413</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/292396"&gt;@David_Billa&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input VALUE;
cards;
20
20
20
20
20
;

data want ;
  dcl hash H (ordered: "A") ;
  h.definekey  ("_n_") ;
  h.definedata ("value") ;
  h.definedone () ;
  do _n_=1 by 1 until(z);
   set have end=z;
   h.add();
  end;
  z=0;
  dcl hiter hi('h');
  do _n_=1 by 1 until(z);
   set have end=z;
   do _n=hi.setcur() by 0 while(_n=0);
    sum=sum(value,sum);
	_n=hi.next();
   end;
   output;
   sum=.;
  end;
  stop;
  keep sum;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:13:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658946#M197413</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-06-15T12:13:23Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658947#M197414</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;Thanks for the code. I want to implement this logic in DI Studio under Expression. Any ways to tackle it in case when Statement or something similar instead of do loop?&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:17:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658947#M197414</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T12:17:15Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658949#M197415</link>
      <description>&lt;P&gt;without the do loop you can try below code&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
sum+value;
run;

proc sort data=want;
by descending sum value;
run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:21:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658949#M197415</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2020-06-15T12:21:30Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658950#M197416</link>
      <description>Thanks. What is that 'sum' in datastep?&lt;BR /&gt;What it does?&lt;BR /&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:26:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658950#M197416</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T12:26:11Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658951#M197417</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/292396"&gt;@David_Billa&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;Thanks for the code. I want to implement this logic in DI Studio under Expression. Any ways to tackle it in case when Statement or something similar instead of do loop?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I don't work with DI Studio, but if it has a node for calculating a cumulative sum, then you can do the sort(descending)-cumulation-sort as I suggested in my first post.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:29:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658951#M197417</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-06-15T12:29:02Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658952#M197418</link>
      <description>Sum is the variable name , if we keep sum+value, it is do the summation in a cumulative way by retaining the values. So we do not have to retain the variable separately.</description>
      <pubDate>Mon, 15 Jun 2020 12:29:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658952#M197418</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2020-06-15T12:29:12Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658960#M197420</link>
      <description>&lt;P&gt;I think that in DI studio the generated code will be in SQL , and I don't think it will be able to calculate a cumulative sum.&lt;/P&gt;
&lt;P&gt;DI Studio does allow to order the table first, then add a uer writen code transformation based on what&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;has proposed, but you can put macrovariables in that will automatically be changed to the dataset names that you connect to this user written transforms.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data &amp;amp;_OUTPUT; 
  set &amp;amp;SYSLAST; 
  sum+value;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can find similar examples in the &lt;A href="https://go.documentation.sas.com/?docsetId=etlug&amp;amp;docsetTarget=p1sgpdg09701ibn16rns0eo3pcst.htm&amp;amp;docsetVersion=4.904&amp;amp;locale=en" target="_self"&gt;online documentation&lt;/A&gt; of DI Studio.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:44:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658960#M197420</guid>
      <dc:creator>MCoopmans</dc:creator>
      <dc:date>2020-06-15T12:44:26Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658963#M197422</link>
      <description>&lt;P&gt;HI&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/292396"&gt;@David_Billa&lt;/a&gt;&amp;nbsp; I do not have clue of what is DI studio, however noticing the mention by&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/2909"&gt;@MCoopmans&lt;/a&gt;&amp;nbsp; DI uses SQL, you could perhaps attempt to use the SQL solution below in your DI studio. Would the below help?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input VALUE;
cards;
20
20
20
20
20
;


proc sql;
create view temp as
select *,monotonic() as rn
from have;
create table want as
select sum(b.value) as sum
from temp a left join temp b
on b.rn&amp;gt;=a.rn
group by a.rn;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 12:54:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658963#M197422</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-06-15T12:54:05Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658968#M197423</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/2909"&gt;@MCoopmans&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;I tried this code below but it's failing. Error which I got is,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;W7F5UFE is a source dataset.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt; ERROR: Cannot sort in place. - ERROR: Unable to create WORK.W7F5UFE.DATA because WORK.W7F5UFE.VIEW already exists. - ERROR: BY variables are not properly sorted on data set WORK.W7F5UFE&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;PRE&gt;proc sort data=&amp;amp;SYSLAST;
by _all_;
run;

 /*sum and group by of three variables var1 var 2 var3*/
data &amp;amp;_OUTPUT; 
  set &amp;amp;SYSLAST; 
  sum+VALUE;
  by var 1 var2 var3;
run;

proc sort data=&amp;amp;_OUTPUT;
by descending sum VALUE;
run;&lt;/PRE&gt;
&lt;P&gt;Objective is to sum the values from VALUE field as I mentioned in the post and Group of the three variables var1,var2 and var3. I don't want any new field in the final target table as well. Kindly guide me to resolve the error.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:06:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658968#M197423</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T13:06:42Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658973#M197425</link>
      <description>&lt;P&gt;The sort is failing to overwrite the view that was created in the previous step, give this one a try instead (just adding out=_tempsort):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=&amp;amp;SYSLAST out=_tempsort;
by _all_;
run;&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;/*sum and group by of three variables var1 var 2 var3*/ data &amp;amp;_OUTPUT; set &amp;amp;SYSLAST; sum+VALUE; by var 1 var2 var3; run; proc sort data=&amp;amp;_OUTPUT; by descending sum VALUE; run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:13:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658973#M197425</guid>
      <dc:creator>MCoopmans</dc:creator>
      <dc:date>2020-06-15T13:13:52Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658975#M197426</link>
      <description>&lt;P&gt;Great! How to tweak your code so that I don't end up with creating/renaming the variable which holds sum value (VALUE)&amp;nbsp;and also have to group by on three variables?&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:16:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658975#M197426</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T13:16:54Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658977#M197427</link>
      <description>&lt;P&gt;to hold sum value as value, there isn't much to do, except&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select sum(b.value) as value&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Not sure, what you mean by-&amp;nbsp;&lt;EM&gt;and also have to group by on three variables?&lt;/EM&gt;&amp;nbsp;Do you mean something like&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select x,y,z,sum(value) as value


group by a.rn, x,y,z;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:23:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658977#M197427</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-06-15T13:23:14Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658984#M197433</link>
      <description>&lt;P&gt;yes, I want like you mentioned in my previous post but it is not producing the desired Output as it is summing the values from all the observations and then doing&amp;nbsp; Group by instead sum values only from current observations and do the Group by&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:39:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658984#M197433</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T13:39:20Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658987#M197434</link>
      <description>&lt;P&gt;Still same error.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:45:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658987#M197434</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T13:45:22Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658998#M197436</link>
      <description>If you group by row number then you will get the same results as your&lt;BR /&gt;source dataset&lt;BR /&gt;</description>
      <pubDate>Mon, 15 Jun 2020 13:54:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-sum/m-p/658998#M197436</guid>
      <dc:creator>David_Billa</dc:creator>
      <dc:date>2020-06-15T13:54:12Z</dc:date>
    </item>
  </channel>
</rss>

