<?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 Extract observations if it's the latest date in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860061#M339775</link>
    <description>&lt;P&gt;I have dataset in the form&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;DATA details;
input id doj$;
datalines;
1 11/06/2020
1 18/07/2020
1 18/07/2020
2 12/06/2020
2 19/06/2020
3 13/06/2020
4 14/06/2020
5 15/06/2020
5 15/06/2020
;


Run;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;(this dataset is sorted by ID and doj).&lt;/P&gt;&lt;P&gt;I would like an output table that gives:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;doj&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;18/07/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;18/07/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;19/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;13/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;14/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;15/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;15/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It looks at each unique ID, and then takes the latest one based on "doj" and takes multiple records if the "latest" is repeated. This is a simple example, but there can be more columns in the source table, and also many more dates for each id.&lt;/P&gt;</description>
    <pubDate>Wed, 22 Feb 2023 03:15:21 GMT</pubDate>
    <dc:creator>yellowredyellow</dc:creator>
    <dc:date>2023-02-22T03:15:21Z</dc:date>
    <item>
      <title>Extract observations if it's the latest date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860061#M339775</link>
      <description>&lt;P&gt;I have dataset in the form&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;DATA details;
input id doj$;
datalines;
1 11/06/2020
1 18/07/2020
1 18/07/2020
2 12/06/2020
2 19/06/2020
3 13/06/2020
4 14/06/2020
5 15/06/2020
5 15/06/2020
;


Run;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;(this dataset is sorted by ID and doj).&lt;/P&gt;&lt;P&gt;I would like an output table that gives:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;doj&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;18/07/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;18/07/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;19/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;13/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;14/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;15/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;15/06/2020&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It looks at each unique ID, and then takes the latest one based on "doj" and takes multiple records if the "latest" is repeated. This is a simple example, but there can be more columns in the source table, and also many more dates for each id.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2023 03:15:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860061#M339775</guid>
      <dc:creator>yellowredyellow</dc:creator>
      <dc:date>2023-02-22T03:15:21Z</dc:date>
    </item>
    <item>
      <title>Re: Extract observations if it's the latest date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860062#M339776</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA details;
input @1 id $2. @3 doj ddmmyy10. ;
format doj ddmmyy10.;
datalines;
1 11/06/2020
1 18/07/2020
1 18/07/2020
2 12/06/2020
2 19/06/2020
3 13/06/2020
4 14/06/2020
5 15/06/2020
5 15/06/2020
;
Run;

proc sql;
  create table Want as
  select A.*
  from details as A
  inner join
  (select  id
          ,max(doj) as doj_max
   from details
   group by id
  ) as B
  on A.id = B.id
  and A.doj = B.doj_max
  ;
run; &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 22 Feb 2023 03:31:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860062#M339776</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2023-02-22T03:31:29Z</dc:date>
    </item>
    <item>
      <title>Re: Extract observations if it's the latest date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860078#M339782</link>
      <description>&lt;P&gt;Do not store dates as character strings, store them as SAS date values.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA details;
input id doj :ddmmyy10.;
format doj yymmdd10.;
datalines;
1 11/06/2020
1 18/07/2020
1 18/07/2020
2 12/06/2020
2 19/06/2020
3 13/06/2020
4 14/06/2020
5 15/06/2020
5 15/06/2020
;

data want;
do until (last.id);
  set details;
  by id;
  maxdate = max(doj,maxdate);
end;
do until (last.id);
  set details;
  by id;
  if doj = maxdate then output;
end;
drop maxdate;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 22 Feb 2023 06:15:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860078#M339782</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-02-22T06:15:57Z</dc:date>
    </item>
    <item>
      <title>Re: Extract observations if it's the latest date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860101#M339797</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/439784"&gt;@yellowredyellow&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I have dataset in the form&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=""&gt;DATA details;
input id doj$;
datalines;
1 11/06/2020
1 18/07/2020
1 18/07/2020
2 12/06/2020
2 19/06/2020
3 13/06/2020
4 14/06/2020
5 15/06/2020
5 15/06/2020
;


Run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;(this dataset is sorted by ID and doj).&lt;/P&gt;
&lt;P&gt;I would like an output table that gives:&lt;/P&gt;
&lt;TABLE border="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;doj&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;18/07/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;18/07/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;19/06/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;13/06/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;14/06/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;15/06/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;15/06/2020&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It looks at each unique ID, and then takes the latest one based on "doj" and takes multiple records if the "latest" is repeated. This is a simple example, but there can be more columns in the source table, and also many more dates for each id.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Did you look at the result from running your example data step code? Proc print for that data set yields:&lt;/P&gt;
&lt;DIV class="branch"&gt;&lt;A name="IDX" target="_blank"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="left"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.DETAILS" cellspacing="0" cellpadding="3"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c m header" scope="col"&gt;id&lt;/TH&gt;
&lt;TH class="c m header" scope="col"&gt;doj&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;11/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;18/07/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;18/07/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;12/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;19/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;13/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;14/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;15/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;15/06/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, not only are you using CHARACTER values for something that should be a SAS date value, you don't even read the entire value so there is no way, with your data step, to generate the desired output as you have lost the last to characters of the year.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2023 09:57:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-observations-if-it-s-the-latest-date/m-p/860101#M339797</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2023-02-22T09:57:27Z</dc:date>
    </item>
  </channel>
</rss>

