<?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: Remove Duplicates and merge records efficiently in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101024#M21154</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;P&gt;Is this way the best way to select the last record for a dataset were num1 and num2 are the same?? Also cost will have to be 0.&lt;/P&gt;&lt;P&gt;My data set has 80612210 obs. I dont want this process to take too long as I have quite a few data steps after this one.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 Feb 2013 15:01:54 GMT</pubDate>
    <dc:creator>Havi</dc:creator>
    <dc:date>2013-02-07T15:01:54Z</dc:date>
    <item>
      <title>Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101019#M21149</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please please help. I have this really large dataset that I need to clean up so I need this process to be optimized the best way possible.&lt;/P&gt;&lt;P&gt;Please see below for sample records:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="WIDTH: 448px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="64"&gt;INPUT:&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;SEQ&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Num1&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Num2&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Class&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Cost&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Time&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;ID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl63" height="20" style="border-top: medium none;"&gt;1&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;13&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;.&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;0&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;50&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl63" height="20" style="border-top: medium none;"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;13&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;0&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;40&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl63" height="20" style="border-top: medium none;"&gt;3&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;18&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;60&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;10&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&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;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;OUTPUT:&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;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;SEQ&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Num1&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Num2&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Class&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Cost&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;Time&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none;"&gt;ID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl63" height="20" style="border-top: medium none;"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;13&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;0&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;90&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl63" height="20" style="border-top: medium none;"&gt;3&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;18&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;60&lt;/TD&gt;&lt;TD align="right" class="xl63" style="border-left: medium none; border-top: medium none;"&gt;10&lt;/TD&gt;&lt;TD class="xl63" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&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;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need to search through all the data to see where num1 and num2 match and where cost = 0 and summarize the time accordingly in 1 record along with the class as per the above. I require the desired output. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2013 09:38:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101019#M21149</guid>
      <dc:creator>Havi</dc:creator>
      <dc:date>2013-02-07T09:38:28Z</dc:date>
    </item>
    <item>
      <title>Re: Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101020#M21150</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If data is already sorted (as in your example), it could be done in one step.&lt;/P&gt;&lt;P&gt;What about &lt;EM&gt;Class&lt;/EM&gt; and &lt;EM&gt;ID&lt;/EM&gt;, to you want the value from the last row of the ones that you want to condense?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try to elaborate using BY, FIRST./LAST. and RETAIN.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2013 10:43:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101020#M21150</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2013-02-07T10:43:47Z</dc:date>
    </item>
    <item>
      <title>Re: Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101021#M21151</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Thanks for the response LinusH. Ok Ignore the question above. Let me rephrase.&lt;/P&gt;&lt;P&gt;Ideally I want to retain the last records class and ID where num1 and num2 are the same. My condition will be if num1 and num2 are the same and cost = 0 than take the last record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;eg:&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="448"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="64"&gt;INPUT:&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;TD width="64"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20"&gt;SEQ&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Num1&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Num2&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Class&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Cost&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Time&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;ID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl65" height="20" style="border-top: medium none;"&gt;1&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;13&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;.&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;0&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;50&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl65" height="20" style="border-top: medium none;"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;13&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;0&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;60&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl65" height="20" style="border-top: medium none;"&gt;3&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;18&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;60&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;10&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&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;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;OUTPUT:&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;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20"&gt;SEQ&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Num1&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Num2&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Class&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Cost&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;Time&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none;"&gt;ID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl65" height="20" style="border-top: medium none;"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;13&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;0&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;60&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl65" height="20" style="border-top: medium none;"&gt;3&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;12&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;18&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;60&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-left: medium none; border-top: medium none;"&gt;10&lt;/TD&gt;&lt;TD class="xl65" style="border-left: medium none; border-top: medium none;"&gt;A123&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please advise.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2013 11:56:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101021#M21151</guid>
      <dc:creator>Havi</dc:creator>
      <dc:date>2013-02-07T11:56:34Z</dc:date>
    </item>
    <item>
      <title>Re: Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101022#M21152</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Not very sure if this is what you are after, but it seems to have the expected output for your as-is incoming data:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input SEQ Num1 Num2 Class:$1. Cost Time ID :$4.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 12 13 . 0 50 A123&lt;/P&gt;&lt;P&gt;2 12 13 A 0 60 A123&lt;/P&gt;&lt;P&gt;3 12 18 A 60 10 A123&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;/*if pre-sorted by num1 num2*/&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by num1 num2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if first.num2*last.num2=1 then output;&lt;/P&gt;&lt;P&gt;else if last.num2 and cost=0 then output;&lt;/P&gt;&lt;P&gt;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>Thu, 07 Feb 2013 14:35:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101022#M21152</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-02-07T14:35:03Z</dc:date>
    </item>
    <item>
      <title>Re: Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101023#M21153</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;just to enforce the sort...&lt;/P&gt;&lt;P&gt;proc sort in=have out=have;&lt;/P&gt;&lt;P&gt;by num1 num2 seq;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;by num1 num2;&lt;/P&gt;&lt;P&gt;if last num2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2013 14:45:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101023#M21153</guid>
      <dc:creator>DBailey</dc:creator>
      <dc:date>2013-02-07T14:45:05Z</dc:date>
    </item>
    <item>
      <title>Re: Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101024#M21154</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;P&gt;Is this way the best way to select the last record for a dataset were num1 and num2 are the same?? Also cost will have to be 0.&lt;/P&gt;&lt;P&gt;My data set has 80612210 obs. I dont want this process to take too long as I have quite a few data steps after this one.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2013 15:01:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101024#M21154</guid>
      <dc:creator>Havi</dc:creator>
      <dc:date>2013-02-07T15:01:54Z</dc:date>
    </item>
    <item>
      <title>Re: Remove Duplicates and merge records efficiently</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101025#M21155</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You need to have the data sorted in the order you want it, and exclude the data you don't want. If your data is already sorted, put the where clause on the set statement. To save time/space, only keep the variables you need. (I'm not sure if you need to keep seq after the data is sorted, for example.)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=have(keep=num1 num2 seq class cost time ID where=(cost=0)) out=haveSorted(drop=cost seq);&lt;/P&gt;&lt;P&gt;&amp;nbsp; by num1 num2 seq;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set haveSorted;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by num1 num2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if last.num2 then output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2013 21:26:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-Duplicates-and-merge-records-efficiently/m-p/101025#M21155</guid>
      <dc:creator>line2ellen</dc:creator>
      <dc:date>2013-02-07T21:26:02Z</dc:date>
    </item>
  </channel>
</rss>

