<?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: Max date in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121624#M24923</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is efficiency an issue in any way?&amp;nbsp; If not, here is a straightforward way:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=tty;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id dt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set tty;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last.id or dt='0001-01-01';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.id;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If efficiency is an issue, you can certainly combine the last two steps without getting too complex:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set tty;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.id then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; already_output='N';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dt='0001-01-01' then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; already_output='Y';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; retain already_output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last.id and already_output='N' then output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These methods assume that there will be at most one record per ID with 0001-01-01 (or that if multiples exist, you only want one).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are more complex, faster ways, but I would recommend sticking with code that makes sense to you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Jan 2013 17:05:32 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2013-01-10T17:05:32Z</dc:date>
    <item>
      <title>Max date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121623#M24922</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;if id has date 0000-01-01 then output that record.&lt;BR /&gt;if not output the record for id with its max date&lt;/P&gt;&lt;P&gt;data tty;&lt;BR /&gt;input id dt :$10.;&lt;BR /&gt;cards;&lt;BR /&gt;111 0001-01-01&lt;BR /&gt;111 2012-11-01&lt;BR /&gt;112 2012-11-01&lt;BR /&gt;112 2012-12-01&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jan 2013 16:36:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121623#M24922</guid>
      <dc:creator>SASPhile</dc:creator>
      <dc:date>2013-01-10T16:36:39Z</dc:date>
    </item>
    <item>
      <title>Re: Max date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121624#M24923</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is efficiency an issue in any way?&amp;nbsp; If not, here is a straightforward way:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=tty;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id dt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set tty;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last.id or dt='0001-01-01';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.id;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If efficiency is an issue, you can certainly combine the last two steps without getting too complex:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set tty;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.id then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; already_output='N';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dt='0001-01-01' then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; already_output='Y';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; retain already_output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last.id and already_output='N' then output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These methods assume that there will be at most one record per ID with 0001-01-01 (or that if multiples exist, you only want one).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are more complex, faster ways, but I would recommend sticking with code that makes sense to you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jan 2013 17:05:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121624#M24923</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2013-01-10T17:05:32Z</dc:date>
    </item>
    <item>
      <title>Re: Max date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121625#M24924</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set tty;&lt;/P&gt;&lt;P&gt;by id;&lt;/P&gt;&lt;P&gt;retain flag;&lt;/P&gt;&lt;P&gt;if first.id then flag=0;&lt;/P&gt;&lt;P&gt;if dt='0001-01-01' then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else if last.id and flag=0 then output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jan 2013 17:27:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121625#M24924</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2013-01-10T17:27:14Z</dc:date>
    </item>
    <item>
      <title>Re: Max date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121626#M24925</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data tty;&lt;/P&gt;&lt;P&gt;format dt date9. ;&lt;/P&gt;&lt;P&gt;input id dt yymmdd10. ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;111 0001-01-01&lt;/P&gt;&lt;P&gt;111 2012-11-01&lt;/P&gt;&lt;P&gt;112 2012-11-01&lt;/P&gt;&lt;P&gt;112 2012-12-01&lt;/P&gt;&lt;P&gt;113 2000-01-01&lt;/P&gt;&lt;P&gt;113 2012-12-05&lt;/P&gt;&lt;P&gt;113 2011-12-05&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data = tty ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by id dt ;&lt;/P&gt;&lt;P&gt;run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data tty_b /*(drop = flag_1)*/ ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain flag_1 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until(last.id or flag_1 = 1) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set tty ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by id ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.id then flag_1 = 0 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dt = '01JAN2000'd then do ;&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; flag_1 = 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; output ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((last.id) and (flag_1 = 0)) then output ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end ;&lt;/P&gt;&lt;P&gt;run ;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jan 2013 17:41:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121626#M24925</guid>
      <dc:creator>asishgautam</dc:creator>
      <dc:date>2013-01-10T17:41:01Z</dc:date>
    </item>
    <item>
      <title>Re: Max date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121627#M24926</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;nuts - just saw the reply from Reeza - both of our answers are very similar - I was trying to go through the dow loop and added a few more examples to data set to test things out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jan 2013 17:43:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Max-date/m-p/121627#M24926</guid>
      <dc:creator>asishgautam</dc:creator>
      <dc:date>2013-01-10T17:43:49Z</dc:date>
    </item>
  </channel>
</rss>

