<?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 Bring back the first of two dates in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353145#M23297</link>
    <description>&lt;P&gt;Hi I have a large dataset consisting of millions of rows,&amp;nbsp;I am trying to bring back the Ref&amp;nbsp; minimum of post_date and minimum of from_date. what is the best way this can be done? See example in table below.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Table_Test&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ref&lt;/TD&gt;&lt;TD&gt;Post_Date&lt;/TD&gt;&lt;TD&gt;From_Date&lt;/TD&gt;&lt;TD&gt;To_Date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;27/12/2016&lt;/TD&gt;&lt;TD&gt;06/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;07/01/2017&lt;/TD&gt;&lt;TD&gt;17/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;02/02/2017&lt;/TD&gt;&lt;TD&gt;18/01/2017&lt;/TD&gt;&lt;TD&gt;28/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2016&lt;/TD&gt;&lt;TD&gt;27/01/2016&lt;/TD&gt;&lt;TD&gt;01/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2016&lt;/TD&gt;&lt;TD&gt;02/02/2016&lt;/TD&gt;&lt;TD&gt;07/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;03/04/2016&lt;/TD&gt;&lt;TD&gt;08/02/2016&lt;/TD&gt;&lt;TD&gt;13/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;03/05/2016&lt;/TD&gt;&lt;TD&gt;14/02/2016&lt;/TD&gt;&lt;TD&gt;19/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;10/04/2015&lt;/TD&gt;&lt;TD&gt;05/04/2015&lt;/TD&gt;&lt;TD&gt;15/04/2015&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;11/09/2015&lt;/TD&gt;&lt;TD&gt;06/09/2015&lt;/TD&gt;&lt;TD&gt;16/09/2015&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;04/02/2014&lt;/TD&gt;&lt;TD&gt;30/01/2014&lt;/TD&gt;&lt;TD&gt;09/02/2014&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;04/02/2016&lt;/TD&gt;&lt;TD&gt;10/02/2014&lt;/TD&gt;&lt;TD&gt;20/02/2014&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;27/12/2016&lt;/TD&gt;&lt;TD&gt;06/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Tue, 25 Apr 2017 11:14:54 GMT</pubDate>
    <dc:creator>zdassu</dc:creator>
    <dc:date>2017-04-25T11:14:54Z</dc:date>
    <item>
      <title>Bring back the first of two dates</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353145#M23297</link>
      <description>&lt;P&gt;Hi I have a large dataset consisting of millions of rows,&amp;nbsp;I am trying to bring back the Ref&amp;nbsp; minimum of post_date and minimum of from_date. what is the best way this can be done? See example in table below.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Table_Test&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ref&lt;/TD&gt;&lt;TD&gt;Post_Date&lt;/TD&gt;&lt;TD&gt;From_Date&lt;/TD&gt;&lt;TD&gt;To_Date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;27/12/2016&lt;/TD&gt;&lt;TD&gt;06/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;07/01/2017&lt;/TD&gt;&lt;TD&gt;17/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;02/02/2017&lt;/TD&gt;&lt;TD&gt;18/01/2017&lt;/TD&gt;&lt;TD&gt;28/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2016&lt;/TD&gt;&lt;TD&gt;27/01/2016&lt;/TD&gt;&lt;TD&gt;01/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2016&lt;/TD&gt;&lt;TD&gt;02/02/2016&lt;/TD&gt;&lt;TD&gt;07/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;03/04/2016&lt;/TD&gt;&lt;TD&gt;08/02/2016&lt;/TD&gt;&lt;TD&gt;13/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;03/05/2016&lt;/TD&gt;&lt;TD&gt;14/02/2016&lt;/TD&gt;&lt;TD&gt;19/02/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;10/04/2015&lt;/TD&gt;&lt;TD&gt;05/04/2015&lt;/TD&gt;&lt;TD&gt;15/04/2015&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;11/09/2015&lt;/TD&gt;&lt;TD&gt;06/09/2015&lt;/TD&gt;&lt;TD&gt;16/09/2015&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;04/02/2014&lt;/TD&gt;&lt;TD&gt;30/01/2014&lt;/TD&gt;&lt;TD&gt;09/02/2014&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;04/02/2016&lt;/TD&gt;&lt;TD&gt;10/02/2014&lt;/TD&gt;&lt;TD&gt;20/02/2014&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;27/12/2016&lt;/TD&gt;&lt;TD&gt;06/01/2017&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 25 Apr 2017 11:14:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353145#M23297</guid>
      <dc:creator>zdassu</dc:creator>
      <dc:date>2017-04-25T11:14:54Z</dc:date>
    </item>
    <item>
      <title>Re: Bring back the first of two dates</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353148#M23298</link>
      <description>&lt;P&gt;Method 1: SQL&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as
  select ref, min(post_date) as min_post_date, min(from_date) as min_from_date
  from have
  group by ref
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Method 2: data step&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by ref;
run;
/* omit this step if have is already sorted, as in your example */
data want (keep=ref min_post_date min_from_date);
set have;
by ref;
retain min_post_date min_from_date;
format min_post_date min_from_date ddmmyy10.;
if first.ref
then do;
  min_post_date = '31dec9999'd;
  min_form_date = '31dec9999'd;
end;
min_post_date = min(min_post_date,post_date);
min_from_date = min(min_from_date,from_date);
if last.ref then output;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Method 3: proc means&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc means data=have noprint;
by ref;
var post_date from_date;
output
  out=want (drop=_type_ _freq_)
  min(post_date)=min_post_date
  min(from_date)=min_from_date
;
run;
/* also needs sorting */&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If the cardinality of ref is sufficiently low, you can use class instead of by in the proc means, and avoid sorting.&lt;/P&gt;</description>
      <pubDate>Tue, 25 Apr 2017 11:38:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353148#M23298</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-04-25T11:38:48Z</dc:date>
    </item>
    <item>
      <title>Re: Bring back the first of two dates</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353149#M23299</link>
      <description>&lt;P&gt;Thanks for your help Kurt, much appreciated&lt;/P&gt;</description>
      <pubDate>Tue, 25 Apr 2017 11:45:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Bring-back-the-first-of-two-dates/m-p/353149#M23299</guid>
      <dc:creator>zdassu</dc:creator>
      <dc:date>2017-04-25T11:45:51Z</dc:date>
    </item>
  </channel>
</rss>

