<?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: Deduplicate based on multiple conditions in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821350#M324265</link>
    <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by id status start_date descending salary:
run;

data want;
set have;
by id;
if first.id;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, posted from my tablet.&lt;/P&gt;</description>
    <pubDate>Sat, 02 Jul 2022 06:06:37 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2022-07-02T06:06:37Z</dc:date>
    <item>
      <title>Deduplicate based on multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821349#M324264</link>
      <description>&lt;P&gt;I have the following data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID &amp;nbsp; &amp;nbsp; Name &amp;nbsp; &amp;nbsp; start_date &amp;nbsp; &amp;nbsp; &amp;nbsp;Salary &amp;nbsp; &amp;nbsp; Bonus &amp;nbsp; &amp;nbsp;Status&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; Jon &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; Jon &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;2 &amp;nbsp; &amp;nbsp; Joe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;2 &amp;nbsp; &amp;nbsp; Joe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;2 &amp;nbsp; &amp;nbsp; Joe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;3 &amp;nbsp; &amp;nbsp; Ron &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;3 &amp;nbsp; &amp;nbsp; Ron &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 105 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;4 &amp;nbsp; &amp;nbsp; Tom &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;4 &amp;nbsp; &amp;nbsp; Tom &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;5 &amp;nbsp; &amp;nbsp; Sam &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;5 &amp;nbsp; &amp;nbsp; Sam &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;5 &amp;nbsp; &amp;nbsp; Sam &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to get the following result&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID &amp;nbsp; &amp;nbsp; Name &amp;nbsp; &amp;nbsp; start_date &amp;nbsp; &amp;nbsp; &amp;nbsp;Salary &amp;nbsp; &amp;nbsp; Bonus &amp;nbsp; &amp;nbsp;Status&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; Jon &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;2 &amp;nbsp; &amp;nbsp; Joe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;3 &amp;nbsp; &amp;nbsp; Ron &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-22-2022 &amp;nbsp; &amp;nbsp; 105 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&lt;/P&gt;&lt;P&gt;4 &amp;nbsp; &amp;nbsp; Tom &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;5 &amp;nbsp; &amp;nbsp; Sam &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;06-21-2022 &amp;nbsp; &amp;nbsp; 105 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;here are the rules;&lt;/P&gt;&lt;P&gt;1. If no duplicate ID, return that record&lt;/P&gt;&lt;P&gt;2. If dupe ID, and one active status, return that record&lt;/P&gt;&lt;P&gt;3. if dupe id and multiple active statuses, return row with earliest start_date&lt;/P&gt;&lt;P&gt;4. if dupe id, multiple active statuses and multiple same start_dates, return the highest salary&lt;/P&gt;&lt;P&gt;5. if dupe id and expired statuses, return the earliest start_date&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;how can I achieve this with SAS code? any help/suggestion will be greatly appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Lux&lt;/P&gt;</description>
      <pubDate>Sat, 02 Jul 2022 05:10:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821349#M324264</guid>
      <dc:creator>luxkandel</dc:creator>
      <dc:date>2022-07-02T05:10:22Z</dc:date>
    </item>
    <item>
      <title>Re: Deduplicate based on multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821350#M324265</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by id status start_date descending salary:
run;

data want;
set have;
by id;
if first.id;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, posted from my tablet.&lt;/P&gt;</description>
      <pubDate>Sat, 02 Jul 2022 06:06:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821350#M324265</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-07-02T06:06:37Z</dc:date>
    </item>
    <item>
      <title>Re: Deduplicate based on multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821367#M324276</link>
      <description>&lt;P&gt;Great! thank you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;also how can i capture the rest of the data in a separate file?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;TIA.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-Lux&lt;/P&gt;</description>
      <pubDate>Sat, 02 Jul 2022 14:14:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821367#M324276</guid>
      <dc:creator>luxkandel</dc:creator>
      <dc:date>2022-07-02T14:14:45Z</dc:date>
    </item>
    <item>
      <title>Re: Deduplicate based on multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821370#M324279</link>
      <description>&lt;P&gt;That's easy in a data step. Create two datasets, and use conditional OUTPUTs:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want1 want2;
set have;
by id;
if first.id
then output want1;
else output want2;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 02 Jul 2022 14:44:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Deduplicate-based-on-multiple-conditions/m-p/821370#M324279</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-07-02T14:44:45Z</dc:date>
    </item>
  </channel>
</rss>

