<?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 across observations with a conditional in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407977#M279436</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/174005"&gt;@hrts4him&lt;/a&gt;&lt;/P&gt;&lt;P&gt;Here is a possible solution: use WHERE clauses and merge:&lt;/P&gt;&lt;PRE&gt;data have;
length Contract_Nbr 8 Status $ 20;
input Contract_Nbr Status;
cards;
123 Complete
456 DNM_Duplicate
456 Complete
789 DNM_Duplicate
991 DNM_Duplicate
991 DNM_Duplicate
772 Complete
;
run;

proc sort data=have;
  by contract_nbr;
run;

data want;
  merge
    have(where=(status^='DNM_Duplicate') in=drop)
    have(where=(status='DNM_Duplicate') in=OK)
    ;
  by contract_nbr;
  if ok and not drop;
run;&lt;/PRE&gt;</description>
    <pubDate>Fri, 27 Oct 2017 11:15:39 GMT</pubDate>
    <dc:creator>s_lassen</dc:creator>
    <dc:date>2017-10-27T11:15:39Z</dc:date>
    <item>
      <title>Compare across observations with a conditional</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407748#M279434</link>
      <description>&lt;P&gt;I am using SAS EG 6.1. I have several million row table that I need to see if there is a status of DNM_Duplicate that there&amp;nbsp;is another record with that same contract_nbr that has&amp;nbsp;status that is not DNM_Duplicate&amp;nbsp;. Here is what the data looks like:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Contract_Nbr&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Status&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;123&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Complete&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;456&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Complete&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;456&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DNM_Duplicate&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;789&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DNM_Duplicate&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;991&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DNM_Duplicate&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;991&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DNM_Duplicate&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;772&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;Complete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;For my needed logic the only records I would see in the output would be Contrac_nbr 789 and 991.&amp;nbsp;I have tried the first.last dot and the do until but can't get that conditional to work and I only get the 1st and last compare.&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; test59;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;set&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; test59a;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT color="#0000ff" face="Courier New"&gt;&amp;nbsp;by&lt;/FONT&gt; ConCode_Nbr Status;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;until&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; (last.ConCode_Nbr);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; first.Status&amp;nbsp;= last.status&amp;nbsp;;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;if&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; ConCode_Combo = &lt;/FONT&gt;&lt;FONT color="#800080" face="Courier New" size="3"&gt;' '&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;then&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; delete;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 26 Oct 2017 17:37:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407748#M279434</guid>
      <dc:creator>hrts4him</dc:creator>
      <dc:date>2017-10-26T17:37:10Z</dc:date>
    </item>
    <item>
      <title>Re: Compare across observations with a conditional</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407772#M279435</link>
      <description>&lt;P&gt;To much code &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
length Contract_Nbr 8 Status $ 20;
input Contract_Nbr Status;

datalines;
123 Complete
456 DNM_Duplicate
456 Complete
789 DNM_Duplicate
991 DNM_Duplicate
991 DNM_Duplicate
772 Complete
;
run;

proc sort data=have;
   by Contract_Nbr Status;
run;

data want;
   set have;
   by Contract_Nbr;
   
   if first.Contract_Nbr and Status = 'DNM_Duplicate';
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 26 Oct 2017 18:39:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407772#M279435</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2017-10-26T18:39:35Z</dc:date>
    </item>
    <item>
      <title>Re: Compare across observations with a conditional</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407977#M279436</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/174005"&gt;@hrts4him&lt;/a&gt;&lt;/P&gt;&lt;P&gt;Here is a possible solution: use WHERE clauses and merge:&lt;/P&gt;&lt;PRE&gt;data have;
length Contract_Nbr 8 Status $ 20;
input Contract_Nbr Status;
cards;
123 Complete
456 DNM_Duplicate
456 Complete
789 DNM_Duplicate
991 DNM_Duplicate
991 DNM_Duplicate
772 Complete
;
run;

proc sort data=have;
  by contract_nbr;
run;

data want;
  merge
    have(where=(status^='DNM_Duplicate') in=drop)
    have(where=(status='DNM_Duplicate') in=OK)
    ;
  by contract_nbr;
  if ok and not drop;
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 27 Oct 2017 11:15:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/407977#M279436</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2017-10-27T11:15:39Z</dc:date>
    </item>
    <item>
      <title>Re: Compare across observations with a conditional</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/408023#M279437</link>
      <description>This works! Thanks.</description>
      <pubDate>Fri, 27 Oct 2017 13:48:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-across-observations-with-a-conditional/m-p/408023#M279437</guid>
      <dc:creator>hrts4him</dc:creator>
      <dc:date>2017-10-27T13:48:08Z</dc:date>
    </item>
  </channel>
</rss>

