<?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 processing of a longitudinal dataset in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87920#M25121</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mirisage,&lt;/P&gt;&lt;P&gt;Your understanding of my code is largely correct. The key point of my code is A) Unconditionally use lag().&amp;nbsp; B) When first record of each group, reset 'flag' value=0, while because of A), B) needs to be put after A), otherwise B) will be overridden by A), the order is important here, this is why my first code was not really working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now I see what puzzles you is "flag=ifn(Arrears_Band not in ('NPNA','writoff') and lag(Arrears_Band)='NPNA',1,flag)", when condition is not satisfied, flag=flag, meaning flag stays the same, holding the whatever the value it has. So this is an One-way switch, whenever the condition is met, flag will be set to '1', and stays at '1', until the first record of next group. So we will see the following instead:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Bank_number&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;Account_number &lt;/TD&gt;&lt;TD&gt;Current_date &lt;/TD&gt;&lt;TD&gt;Arrears_Band &lt;/TD&gt;&lt;TD&gt;lag(Arrears_Band ) &lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30SEP2010&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111 &lt;/TD&gt;&lt;TD&gt;31OCT2010&lt;/TD&gt;&lt;TD&gt;Current&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30NOV2010&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;Current&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30JUN2011&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;01JAN2012&lt;/TD&gt;&lt;TD&gt;writoff&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By the end of loop (for the use this do-loop, please google "DOW SAS"), the last record of this group will be left in PDV:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;01JAN2012&lt;/TD&gt;&lt;TD&gt;writoff&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;And all we need is flag=1, this flag of '1' will be carried over the second do-loop and thus output every single one of obs in that group. Again, to understand this, some knowledge on DOW will help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 10 Oct 2012 02:46:23 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2012-10-10T02:46:23Z</dc:date>
    <item>
      <title>Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87915#M25116</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;Hi Forum;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;I have 9 distinct accounts in this dataset (this data set can be readily read in SAS).&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; this;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;informat&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; current_date &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: teal; font-size: 11pt;"&gt;date9.&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; Bank_number&amp;nbsp;&amp;nbsp;&amp;nbsp; Account_number&amp;nbsp; $ &lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;5&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;-&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;7&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; Current_date&amp;nbsp;&amp;nbsp; Arrears_Band $&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;19&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;-&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;25&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;format&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; current_date &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: teal; font-size: 11pt;"&gt;date9.&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;cards&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30SEP2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31OCT2010 Current&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 01JAN2012 writoff&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;70&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp; 31DEC2011 writoff&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;70&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp; 31JAN2012 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: aqua; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 Current&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: aqua; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31DEC2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: silver; color: black; font-size: 11pt;"&gt;50&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31JAN2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: silver; color: black; font-size: 11pt;"&gt;50&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 28FEB2011 writoff&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: fuchsia; color: black; font-size: 11pt;"&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAR2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: fuchsia; color: black; font-size: 11pt;"&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: fuchsia; color: black; font-size: 11pt;"&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: fuchsia; color: black; font-size: 11pt;"&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2011 90 +&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2011 90 +&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31JUL2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31AUG2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 04JAN2012 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 08FEB2010 30 - 60&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAR2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2010 60 - 90&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: silver; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 666&amp;nbsp;&amp;nbsp;&amp;nbsp; 03JAN2012 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 777&amp;nbsp;&amp;nbsp;&amp;nbsp; 04FEB2010 1 - 30&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 03MAR2010 Current&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;I have a Business Rule: &lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; font-size: 11pt;"&gt;The only arrears_band that you can get after NPNA is either "NPNA" or “writoff”.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; font-size: 11pt;"&gt;Question: I need to separate all subjects (with its complete list of records) that violate this rule.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG style="text-decoration: underline;"&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt; text-decoration: underline;"&gt;Note:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;1). If a subject has been exclusively in NPNA arrears_band throughout its life, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;then that subject does not violate our condition.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;2). if a subject has only a single record and its Arrears_Band = “NPNA”, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;then that subject does not violate our condition.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;Answer:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30SEP2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31OCT2010 Current /*after NPNA you will not get either "NPNA" or “writoff” which violates our rule */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 01JAN2012 writoff&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 08FEB2010 30 - 60&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAR2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2010 60 - 90 /*after NPNA you will not get either "NPNA" or “writoff” which violates our rule */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: lime; color: black; font-size: 11pt;"&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;I have just tweaked a code developed by &lt;/SPAN&gt;&lt;SPAN lang="EN" style="font-family: Helvetica; color: #575757; font-size: 10pt;"&gt;mkeintz for a somewhat similar situation but it doesn’t work for this situation because I cannot correctly incorporate the logic.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN" style="font-family: Helvetica; color: #575757; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN" style="font-family: Helvetica; color: #339966; font-size: 10pt;"&gt;/*Sorting by three variables that uniquely identify a subject*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;sort&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;data&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;=this &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;out&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;=have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; bank_number account_number current_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; want;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; this;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; bank_number account_number &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;notsorted&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; NPNA_encountered &lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; first.account_number &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; NPNA_encountered=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; last.account_number &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;and&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; NPNA_encountered=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;output&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; arrears_bank=&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 11pt;"&gt;'NPNA'&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 11pt;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt; NPNA_encountered=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 11pt; background: white; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 11pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;I really appreciate your help to develop my code.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;Thanks&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt;Miris&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 11pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 06 Oct 2012 04:20:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87915#M25116</guid>
      <dc:creator>Mirisage</dc:creator>
      <dc:date>2012-10-06T04:20:41Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87916#M25117</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;If you are reading your data from raw and planning to use your input code as is, it won't work. Your main problem can be resolved by 2XDOW:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data this;&lt;/P&gt;&lt;P&gt;input Bank_number:$&amp;nbsp;&amp;nbsp;&amp;nbsp; Account_number:$ Current_date :date9.&amp;nbsp;&amp;nbsp; Arrears_Band :&amp;amp;$;&lt;/P&gt;&lt;P&gt;format current_date date9.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30SEP2010 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31OCT2010 Current&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 01JAN2012 writoff&lt;/P&gt;&lt;P&gt;70&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp; 31DEC2011 writoff&lt;/P&gt;&lt;P&gt;70&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp; 31JAN2012 NPNA&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 Current&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31DEC2010 NPNA&lt;/P&gt;&lt;P&gt;50&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31JAN2011 NPNA&lt;/P&gt;&lt;P&gt;50&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 28FEB2011 writoff&lt;/P&gt;&lt;P&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAR2011 NPNA&lt;/P&gt;&lt;P&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2011 NPNA&lt;/P&gt;&lt;P&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2011 NPNA&lt;/P&gt;&lt;P&gt;20&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/P&gt;&lt;P&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2011 90 +&lt;/P&gt;&lt;P&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2011 90 +&lt;/P&gt;&lt;P&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31JUL2011 NPNA&lt;/P&gt;&lt;P&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31AUG2011 NPNA&lt;/P&gt;&lt;P&gt;100 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 04JAN2012 NPNA&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 08FEB2010 30 - 60&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAR2010 NPNA&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 30APR2010 60 - 90&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp; 31MAY2010 NPNA&lt;/P&gt;&lt;P&gt;40&amp;nbsp; 666&amp;nbsp;&amp;nbsp;&amp;nbsp; 03JAN2012 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 777&amp;nbsp;&amp;nbsp;&amp;nbsp; 04FEB2010 1 - 30&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp; 03MAR2010 Current&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=this out=have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by bank_number account_number current_date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*2XDOW*/&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do until (last.account_number);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by bank_number account_number current_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.account_number then flag=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else flag=ifn(Arrears_Band not in ('NPNA','writoff') and lag(Arrears_Band)='NPNA',1,flag);&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do until (last.account_number);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by bank_number account_number current_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if flag then output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 07 Oct 2012 02:31:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87916#M25117</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-10-07T02:31:44Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87917#M25118</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Haikuo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This code correctly identifies one account which violates the business rule. This is the account.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Obs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bank_number&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Account_number&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Current_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Arrears_Band&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag (these are variable names)&lt;/P&gt;&lt;TABLE border="1" cellpadding="0" cellspacing="0" style="border: #4f493b 1pt solid;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;1&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;40&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;555&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;08FEB2010&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;30 - 60&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;1&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;2&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;40&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;555&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;31MAR2010&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;1&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;3&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;40&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;555&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;30APR2010&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;60 - 90&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;1&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;4&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;40&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;555&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;31MAY2010&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD nowrap="nowrap" valign="top"&gt;&lt;P align="right" style="text-align: right;"&gt;&lt;SPAN style="font-family: 'Times New Roman';"&gt;1&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, there is another account which violates our business rule. Below shown is that account which is not identified by the code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30SEP2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31OCT2010 Current /*after NPNA you will not get either "NPNA" or “writoff” which violates our rule */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 11pt;"&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 01JAN2012 writoff&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;I wonder if you have sometime to have a look. &lt;/P&gt;&lt;P&gt;Thank you for your time and expertise.&lt;/P&gt;&lt;P&gt;Mirisage&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Oct 2012 03:13:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87917#M25118</guid>
      <dc:creator>Mirisage</dc:creator>
      <dc:date>2012-10-09T03:13:04Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87918#M25119</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mirisage,&lt;/P&gt;&lt;P&gt;My bad. I switched around some statements and failed to put them back to order, so I fell into this lag() caveat, here it goes:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; want;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;do&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;until&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; (last.account_number);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; bank_number account_number current_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag=ifn(Arrears_Band not in (&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 10pt;"&gt;'NPNA'&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 10pt;"&gt;'writoff'&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;) and lag(Arrears_Band)=&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 10pt;"&gt;'NPNA'&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;,&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 10pt; background: white; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;,flag);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; first.account_number &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; flag=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 10pt; background: white; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;do&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;until&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; (last.account_number);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; bank_number account_number current_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt; flag &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;output&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 10pt;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;STRONG style="color: navy; font-size: 10pt; background: white; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Oct 2012 13:31:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87918#M25119</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-10-09T13:31:46Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87919#M25120</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Haikuo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for this code which worked very well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to understand what this code is doing and could you please see if I have understood correctly, time permitting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is what “ifn” function does based on literature I have reviewed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*In the following code, we assign a value of 1 or 0 to flag variable*/&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;set test;&lt;/P&gt;&lt;P&gt;if sex= ‘Male’ then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag =1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&amp;nbsp; flag=0;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Some programmers use the following code to do the same task above*/&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;flag=ifn(sex=’Male’,1,0);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="text-decoration: underline;"&gt;This is your code&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do until (last.account_number);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by bank_number account_number current_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag=ifn(Arrears_Band not in ('NPNA','writoff') and lag(Arrears_Band)='NPNA',1,flag);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.account_number then flag=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do until (last.account_number);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by bank_number account_number current_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if flag then output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;• Do until starts to read all the records pertinent to first account found in our data set called “this”.&lt;/P&gt;&lt;P&gt;So, these are the records. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Bank_number&amp;nbsp;&amp;nbsp;&amp;nbsp; Account_number&amp;nbsp; Current_date&amp;nbsp;&amp;nbsp; Arrears_Band&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30SEP2010 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 31OCT2010 Current&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30NOV2010 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 30JUN2011 NPNA&lt;/P&gt;&lt;P&gt;10&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp; 01JAN2012 writoff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when do until executes below statement, I think this is what happening. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;flag=ifn(Arrears_Band not in ('NPNA','writoff') and lag(Arrears_Band)='NPNA',1,flag);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;Above statement says:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;If Arrears_Band not in ('NPNA','writoff') and lag(Arrears_Band)='NPNA’&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then a new variable called “flag” is created and its value is returned as 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If this condition is not satisfied, then then the value for the variable “flag” is returned as "flag".&lt;/P&gt;&lt;P&gt;(I am not too sure).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then comes to the next statement:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.account_number then flag=0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Above statement returns zero for the first account_number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now this should be the answer after processing the account_number that do until first hits.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Bank_number&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;Account_number &lt;/TD&gt;&lt;TD&gt;Current_date &lt;/TD&gt;&lt;TD&gt;Arrears_Band &lt;/TD&gt;&lt;TD&gt;lag(Arrears_Band ) &lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30SEP2010&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111 &lt;/TD&gt;&lt;TD&gt;31OCT2010&lt;/TD&gt;&lt;TD&gt;Current&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30NOV2010&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;Current&lt;/TD&gt;&lt;TD&gt;flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30JUN2011&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;01JAN2012&lt;/TD&gt;&lt;TD&gt;writoff&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then in the next do until pass, all the records whose flag = 1 are outputted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But then only the last 3 records of the above table should be outputted which is not our intended answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But your code generated the intended answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How come?&lt;/P&gt;&lt;P&gt;Would appreciate if you could shed some light.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your time.&lt;/P&gt;&lt;P&gt;Mirisage&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Oct 2012 01:56:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87919#M25120</guid>
      <dc:creator>Mirisage</dc:creator>
      <dc:date>2012-10-10T01:56:59Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87920#M25121</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mirisage,&lt;/P&gt;&lt;P&gt;Your understanding of my code is largely correct. The key point of my code is A) Unconditionally use lag().&amp;nbsp; B) When first record of each group, reset 'flag' value=0, while because of A), B) needs to be put after A), otherwise B) will be overridden by A), the order is important here, this is why my first code was not really working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now I see what puzzles you is "flag=ifn(Arrears_Band not in ('NPNA','writoff') and lag(Arrears_Band)='NPNA',1,flag)", when condition is not satisfied, flag=flag, meaning flag stays the same, holding the whatever the value it has. So this is an One-way switch, whenever the condition is met, flag will be set to '1', and stays at '1', until the first record of next group. So we will see the following instead:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Bank_number&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;Account_number &lt;/TD&gt;&lt;TD&gt;Current_date &lt;/TD&gt;&lt;TD&gt;Arrears_Band &lt;/TD&gt;&lt;TD&gt;lag(Arrears_Band ) &lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30SEP2010&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111 &lt;/TD&gt;&lt;TD&gt;31OCT2010&lt;/TD&gt;&lt;TD&gt;Current&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30NOV2010&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;Current&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;30JUN2011&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;01JAN2012&lt;/TD&gt;&lt;TD&gt;writoff&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By the end of loop (for the use this do-loop, please google "DOW SAS"), the last record of this group will be left in PDV:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;10 &lt;/TD&gt;&lt;TD&gt;111&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;01JAN2012&lt;/TD&gt;&lt;TD&gt;writoff&lt;/TD&gt;&lt;TD&gt;NPNA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;And all we need is flag=1, this flag of '1' will be carried over the second do-loop and thus output every single one of obs in that group. Again, to understand this, some knowledge on DOW will help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Oct 2012 02:46:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87920#M25121</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-10-10T02:46:23Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional processing of a longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87921#M25122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Haikuo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for this great descrition.&lt;/P&gt;&lt;P&gt;I really appreciate it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mirisage&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Oct 2012 21:27:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Conditional-processing-of-a-longitudinal-dataset/m-p/87921#M25122</guid>
      <dc:creator>Mirisage</dc:creator>
      <dc:date>2012-10-10T21:27:02Z</dc:date>
    </item>
  </channel>
</rss>

