<?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: get value until get positive value group wise in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/get-value-until-get-positive-value-group-wise/m-p/713886#M220316</link>
    <description>&lt;P&gt;Do something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input amt;
datalines; 
2    
-3   
-4   
5    
6    
7    
-4   
2    
;

data want(drop = n);
   set have;
   new_amt = amt;
   if new_amt &amp;lt; 0 then do;
      n + new_amt;
      new_amt = 0;
   end;
   if new_amt &amp;gt; 0 &amp;amp; n &amp;lt; 0 then do;
      new_amt = max(0, new_amt + n);
      n = min(n + amt, 0);
   end;
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;amt  new_amt 
2    2 
-3   0 
-4   0 
5    0 
6    4 
7    7 
-4   0 
2    0 &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 25 Jan 2021 13:07:14 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2021-01-25T13:07:14Z</dc:date>
    <item>
      <title>get value until get positive value group wise</title>
      <link>https://communities.sas.com/t5/SAS-Programming/get-value-until-get-positive-value-group-wise/m-p/713885#M220315</link>
      <description>&lt;P&gt;amt&amp;nbsp; &amp;nbsp; &amp;nbsp; new_amt&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&lt;BR /&gt;-3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &lt;BR /&gt;-4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;BR /&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5(-7)=-2 so should come zero and (-2 remaining value)&lt;BR /&gt;6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-2+6=4 (value 4 should come)(until value get positive)&lt;BR /&gt;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7 &lt;BR /&gt;-4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -4+2=-2 (negative so value should come 0)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;finally&lt;/P&gt;
&lt;P&gt;amt&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new_amt&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &lt;BR /&gt;-3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &lt;BR /&gt;-4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;BR /&gt;6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&lt;BR /&gt;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7 &lt;BR /&gt;-4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;we have one data like negative and positive values are there if negative value is there then we have to subtract next value until get positive. I have give raw data and final data&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jan 2021 12:43:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/get-value-until-get-positive-value-group-wise/m-p/713885#M220315</guid>
      <dc:creator>thanikondharish</dc:creator>
      <dc:date>2021-01-25T12:43:43Z</dc:date>
    </item>
    <item>
      <title>Re: get value until get positive value group wise</title>
      <link>https://communities.sas.com/t5/SAS-Programming/get-value-until-get-positive-value-group-wise/m-p/713886#M220316</link>
      <description>&lt;P&gt;Do something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input amt;
datalines; 
2    
-3   
-4   
5    
6    
7    
-4   
2    
;

data want(drop = n);
   set have;
   new_amt = amt;
   if new_amt &amp;lt; 0 then do;
      n + new_amt;
      new_amt = 0;
   end;
   if new_amt &amp;gt; 0 &amp;amp; n &amp;lt; 0 then do;
      new_amt = max(0, new_amt + n);
      n = min(n + amt, 0);
   end;
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;amt  new_amt 
2    2 
-3   0 
-4   0 
5    0 
6    4 
7    7 
-4   0 
2    0 &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jan 2021 13:07:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/get-value-until-get-positive-value-group-wise/m-p/713886#M220316</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-01-25T13:07:14Z</dc:date>
    </item>
  </channel>
</rss>

