<?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: Compare current value to previous value in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705228#M216285</link>
    <description>&lt;P&gt;What is your rule for visit 2, if both visit 1 and visit 2 are HEART?&amp;nbsp; This is a case where a given visit is the same as the prior visit, but there in no earlier visit to use as the criterion.&lt;/P&gt;</description>
    <pubDate>Fri, 11 Dec 2020 01:27:04 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2020-12-11T01:27:04Z</dc:date>
    <item>
      <title>Compare current value to previous value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705215#M216277</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could you let me know how to achieve for below logic:-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to flag the below records from table 1 in such a way that, I need to get the second table Flag column populated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data is sorted by column 1,2.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;Scenario&lt;/STRONG&gt;&amp;nbsp;: should be flagged as 1 for first visit&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;and for remaining visits we need to &lt;STRONG&gt;--&amp;gt;&lt;/STRONG&gt; compare the &lt;STRONG&gt;current visit&lt;/STRONG&gt; with the &lt;STRONG&gt;previous visit&lt;/STRONG&gt; based on the&amp;nbsp;&lt;STRONG&gt;Reason&lt;/STRONG&gt; column. If records have same&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; &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;reason, then compare to prior visit Reason (Until 3 times, only if Reason value is same).&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;Please see the logic column in the Desired outcome table.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Patient_ID&lt;/TD&gt;&lt;TD&gt;Visit&lt;/TD&gt;&lt;TD&gt;Reason&lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Heart&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Kidney&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Lungs&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;Lungs&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Lungs&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Desired Outcome&lt;/STRONG&gt;:&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Patient_ID&lt;/TD&gt;&lt;TD&gt;Visit&lt;/TD&gt;&lt;TD&gt;Reason&lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Logic&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Heart&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;since &lt;STRONG&gt;first&lt;/STRONG&gt; visit we will flag as 1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Kidney&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;comparing &lt;STRONG&gt;current visit&lt;/STRONG&gt; (Kidney) with &lt;STRONG&gt;previous&lt;/STRONG&gt; (Heart), flagging as 1 when different value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Lungs&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;comparing &lt;STRONG&gt;current visit&lt;/STRONG&gt; (Lungs) with &lt;STRONG&gt;previous&lt;/STRONG&gt; (Kidney), flagging as 1 when different value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;Lungs&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;comparing &lt;STRONG&gt;current visit&lt;/STRONG&gt; (Lungs) with &lt;STRONG&gt;previous&lt;/STRONG&gt; (Lungs), when same value, compare with &lt;STRONG&gt;prior value&lt;/STRONG&gt;&amp;nbsp; which is (Kidney)(2nd visit), since it is different we will assign 0&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Lungs&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;comparing &lt;STRONG&gt;current visit&lt;/STRONG&gt; (Lungs) with &lt;STRONG&gt;previous&lt;/STRONG&gt; (Lungs), when same value, compare with &lt;STRONG&gt;prior value&amp;nbsp;&lt;/STRONG&gt; which is (Lungs)(3rd visit), since it is same we will assign 1&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;Note&lt;/STRONG&gt;:- we need to compare only until last &lt;STRONG&gt;3 visits&lt;/STRONG&gt; based on &lt;STRONG&gt;Reason&lt;/STRONG&gt; column.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Lavanya&lt;/P&gt;</description>
      <pubDate>Thu, 10 Dec 2020 23:06:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705215#M216277</guid>
      <dc:creator>Lav001</dc:creator>
      <dc:date>2020-12-10T23:06:33Z</dc:date>
    </item>
    <item>
      <title>Re: Compare current value to previous value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705216#M216278</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;FLAG = ifn(PATIENT_ID ne lag(PATIENT_ID)                         ,  1
     , ifn(PATIENT_ID = lag1(PATIENT_ID) &amp;amp; REASON ne lag1(REASON),  1
     , ifn(PATIENT_ID = lag2(PATIENT_ID) &amp;amp; REASON ne lag2(REASON),  0
     , ifn(PATIENT_ID = lag3(PATIENT_ID) &amp;amp; REASON ne lag3(REASON),  1
     ,                                                              0 ))));
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 10 Dec 2020 23:49:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705216#M216278</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-12-10T23:49:43Z</dc:date>
    </item>
    <item>
      <title>Re: Compare current value to previous value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705228#M216285</link>
      <description>&lt;P&gt;What is your rule for visit 2, if both visit 1 and visit 2 are HEART?&amp;nbsp; This is a case where a given visit is the same as the prior visit, but there in no earlier visit to use as the criterion.&lt;/P&gt;</description>
      <pubDate>Fri, 11 Dec 2020 01:27:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705228#M216285</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-12-11T01:27:04Z</dc:date>
    </item>
    <item>
      <title>Re: Compare current value to previous value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705229#M216286</link>
      <description>&lt;P&gt;Putting aside my question about what to do if visit1=visit2, your logic can be restated as.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;The flag always=1 EXCEPT when the current reason is the same as both prior reasons, in which case it is zero.&lt;/P&gt;
&lt;P&gt;So just defaulting to 1 and looking for the special condition for zero is tempting:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;

  flag=1;
  if (reason=lag(reason)=lag2(reason)) and (patient_id=lag2(patient_id)) then flag=0;
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;or, using syntax that might be slightly more general than&amp;nbsp; "reason=lag(reason)=lag2(reason)", you could used:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;  if (reason=lag(reason)) and (reason=lag2(reason)) and (patient_id=lag2(patient_id)) then flag=0;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 11 Dec 2020 01:42:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705229#M216286</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-12-11T01:42:28Z</dc:date>
    </item>
    <item>
      <title>Re: Compare current value to previous value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705242#M216292</link>
      <description>&lt;P&gt;I would not use lag at all, but retain the last two reasons.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set have;
   by Patient_ID;
   
   length Flag 8 _r1 _r2 $ 8; /* Change the length of _r1 and _r2 to match with the length of "reason" */
   retain _r1 _r2;
   drop _r1 _r2;
   
   if first.Patient_ID then do;
      Flag = 1;
      call missing(_r1, _r2);
   end;
   else do;
      Flag = (Reason ^= _r1 or Reason = _r1 and Reason = _r2);
   end;
   
   _r2 = _r1;
   _r1 = Reason;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 11 Dec 2020 06:08:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705242#M216292</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2020-12-11T06:08:01Z</dc:date>
    </item>
    <item>
      <title>Re: Compare current value to previous value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705415#M216395</link>
      <description>&lt;P&gt;&lt;EM&gt;&amp;gt; I would not use lag at all, but retain the last two reasons.&lt;/EM&gt;&lt;BR /&gt;Yep, two possible methods.&lt;BR /&gt;I find mine more legible.&lt;/P&gt;</description>
      <pubDate>Fri, 11 Dec 2020 23:18:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-current-value-to-previous-value/m-p/705415#M216395</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-12-11T23:18:02Z</dc:date>
    </item>
  </channel>
</rss>

