<?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 find last negative value of  a column in a sas dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462651#M117809</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID : $20. Balance;
sign=sign(Balance);
cards;
AADDSEESADD	4490
AADDSEESADD	23185
AADDSEESADD	10210415
AADDSEESADD	-30883186
AADDSEESADD	-30893858
AADDSEESADD	-31206302
AADDSEESADD	6574160
AADDSEESADD	6549160
AADDSEESADD	6539160
EEDDSEESGFH	4325234532
EEDDSEESGFH	-5476
EEDDSEESGFH	-50
EEDDSEESGFH	3722
EEDDSEESGFH	27755
;
run;
data want;
 do until(last.sign);
   set have;
   by id sign notsorted;
 end;
yes=last.id;
 do until(last.sign);
   set have;
   by id sign notsorted;
   if yes then output;
 end;
drop yes sign;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 16 May 2018 12:34:31 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2018-05-16T12:34:31Z</dc:date>
    <item>
      <title>How to find last negative value of  a column in a sas dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462614#M117803</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How can&amp;nbsp;I&amp;nbsp;select all positive Balance till first occurence of a negative Balance of a particular ID and Order should be last to first.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;I have a data set like below:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="187"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="99"&gt;ID&lt;/TD&gt;
&lt;TD width="88"&gt;Balance&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;4490&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;23185&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;10210415&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;-30883186&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;-30893858&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;-31206302&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;6574160&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;6549160&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;6539160&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;4325234532&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;-5476&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;-50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;3722&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;27755&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OUTPUT want like below:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="187"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="99"&gt;ID&lt;/TD&gt;
&lt;TD width="88"&gt;Balance&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;6574160&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;6549160&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;AADDSEESADD&lt;/TD&gt;
&lt;TD&gt;6539160&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;3722&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EEDDSEESGFH&lt;/TD&gt;
&lt;TD&gt;27755&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Snehasis&lt;/P&gt;</description>
      <pubDate>Wed, 16 May 2018 10:13:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462614#M117803</guid>
      <dc:creator>SnehasisTTPL</dc:creator>
      <dc:date>2018-05-16T10:13:50Z</dc:date>
    </item>
    <item>
      <title>Re: How to find last negative value of  a column in a sas dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462620#M117805</link>
      <description>&lt;P&gt;Post test data in the form of a datastep.&amp;nbsp; As such not tested this:&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;&lt;BR /&gt;  by id;&lt;BR /&gt;  retain flag;&lt;BR /&gt;  if first.id then flag=0;
  if balance &amp;gt; 0 and lag(balance &amp;lt; 0) then flag=1;&lt;BR /&gt;  if flag=1 then output;
run; &lt;/PRE&gt;</description>
      <pubDate>Wed, 16 May 2018 10:22:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462620#M117805</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-05-16T10:22:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to find last negative value of  a column in a sas dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462629#M117806</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;'s code will need a small extension to cope with cases where the last balance of an id is negative and the first balance of the following id is positive.&lt;/P&gt;</description>
      <pubDate>Wed, 16 May 2018 10:52:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462629#M117806</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-05-16T10:52:07Z</dc:date>
    </item>
    <item>
      <title>Re: How to find last negative value of  a column in a sas dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462641#M117807</link>
      <description>&lt;P&gt;@&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/6010"&gt;@SnehasisTTPL&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;Shouldn't you also have a Date variable or do you really intend to implement logic using the row number only?&lt;/P&gt;</description>
      <pubDate>Wed, 16 May 2018 11:55:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462641#M117807</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2018-05-16T11:55:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to find last negative value of  a column in a sas dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462651#M117809</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID : $20. Balance;
sign=sign(Balance);
cards;
AADDSEESADD	4490
AADDSEESADD	23185
AADDSEESADD	10210415
AADDSEESADD	-30883186
AADDSEESADD	-30893858
AADDSEESADD	-31206302
AADDSEESADD	6574160
AADDSEESADD	6549160
AADDSEESADD	6539160
EEDDSEESGFH	4325234532
EEDDSEESGFH	-5476
EEDDSEESGFH	-50
EEDDSEESGFH	3722
EEDDSEESGFH	27755
;
run;
data want;
 do until(last.sign);
   set have;
   by id sign notsorted;
 end;
yes=last.id;
 do until(last.sign);
   set have;
   by id sign notsorted;
   if yes then output;
 end;
drop yes sign;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 16 May 2018 12:34:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462651#M117809</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-05-16T12:34:31Z</dc:date>
    </item>
    <item>
      <title>Re: How to find last negative value of  a column in a sas dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462710#M117835</link>
      <description>&lt;P&gt;Perhaps a little simpler:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by ID;&lt;/P&gt;
&lt;P&gt;if first.ID then output_flag = 'N';&lt;/P&gt;
&lt;P&gt;if (balance &amp;lt; 0 then output_flag = 'Y';&lt;/P&gt;
&lt;P&gt;retain output_flag;&lt;/P&gt;
&lt;P&gt;if output_flag = 'Y' and balance &amp;gt;= 0;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, there are always cases to consider:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Could there be missing values for BALANCE?&lt;/LI&gt;
&lt;LI&gt;For the same ID, could there be a group of negative values, followed by a group of positive values, followed by another group of negative values?&amp;nbsp; (What should happen then?)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So simple might be good, but it depends on some of the details involved in getting the intended result.&lt;/P&gt;</description>
      <pubDate>Wed, 16 May 2018 14:12:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-last-negative-value-of-a-column-in-a-sas-dataset/m-p/462710#M117835</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-05-16T14:12:39Z</dc:date>
    </item>
  </channel>
</rss>

