<?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: how to get the last two observations of a group of data in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492127#M31724</link>
    <description>&lt;P&gt;UNTESTED CODE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have2;
     set have;
     by id;
     if first.id then count=0;
     count+1;
run;
proc sql;
     create table want as select * from have2 
     where count&amp;gt;=max(count)-1
     group by id;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 03 Sep 2018 23:41:09 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2018-09-03T23:41:09Z</dc:date>
    <item>
      <title>how to get the last two observations of a group of data</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492126#M31723</link>
      <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For the following sample dataset I need to retrieve the last value of &lt;STRONG&gt;DATE and TIME&amp;nbsp;&lt;/STRONG&gt;within each group (variable&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;TIME&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50001&lt;/TD&gt;&lt;TD&gt;01/02/2018&lt;/TD&gt;&lt;TD&gt;112132&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50001&lt;/TD&gt;&lt;TD&gt;12/12/2018&lt;/TD&gt;&lt;TD&gt;141625&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50001&lt;/TD&gt;&lt;TD&gt;22/09/2018&lt;/TD&gt;&lt;TD&gt;204958&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50001&lt;/TD&gt;&lt;TD&gt;02/05/2018&lt;/TD&gt;&lt;TD&gt;115545&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50002&lt;/TD&gt;&lt;TD&gt;14/08/2018&lt;/TD&gt;&lt;TD&gt;110038&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50002&lt;/TD&gt;&lt;TD&gt;27/11/2018&lt;/TD&gt;&lt;TD&gt;125737&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50002&lt;/TD&gt;&lt;TD&gt;23/06/2018&lt;/TD&gt;&lt;TD&gt;105847&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50002&lt;/TD&gt;&lt;TD&gt;22/12/2018&lt;/TD&gt;&lt;TD&gt;111211&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50003&lt;/TD&gt;&lt;TD&gt;12/08/2018&lt;/TD&gt;&lt;TD&gt;120045&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50003&lt;/TD&gt;&lt;TD&gt;14/08/2018&lt;/TD&gt;&lt;TD&gt;105922&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50003&lt;/TD&gt;&lt;TD&gt;11/09/2018&lt;/TD&gt;&lt;TD&gt;103040&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50003&lt;/TD&gt;&lt;TD&gt;13/08/2018&lt;/TD&gt;&lt;TD&gt;141713&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;run;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Therefore the output shall be:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;TIME&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50001&lt;/TD&gt;&lt;TD&gt;22/09/2018&lt;/TD&gt;&lt;TD&gt;204958&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50001&lt;/TD&gt;&lt;TD&gt;12/12/2018&lt;/TD&gt;&lt;TD&gt;141625&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50002&lt;/TD&gt;&lt;TD&gt;27/11/2018&lt;/TD&gt;&lt;TD&gt;125737&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50002&lt;/TD&gt;&lt;TD&gt;22/12/2018&lt;/TD&gt;&lt;TD&gt;111211&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50003&lt;/TD&gt;&lt;TD&gt;14/08/2018&lt;/TD&gt;&lt;TD&gt;105922&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50003&lt;/TD&gt;&lt;TD&gt;11/09/2018&lt;/TD&gt;&lt;TD&gt;103040&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I have the following code but it only shows me the last one,&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
if 0 then set have;
call missing(dt);
do until(last.id);
set have;
by id;
dt=dt&amp;lt;&amp;gt;dhms(date,0,0,time);
end;
drop dt;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Thank you all.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Sep 2018 23:27:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492126#M31723</guid>
      <dc:creator>JosephCE</dc:creator>
      <dc:date>2018-09-03T23:27:59Z</dc:date>
    </item>
    <item>
      <title>Re: how to get the last two observations of a group of data</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492127#M31724</link>
      <description>&lt;P&gt;UNTESTED CODE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have2;
     set have;
     by id;
     if first.id then count=0;
     count+1;
run;
proc sql;
     create table want as select * from have2 
     where count&amp;gt;=max(count)-1
     group by id;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Sep 2018 23:41:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492127#M31724</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-09-03T23:41:09Z</dc:date>
    </item>
    <item>
      <title>Re: how to get the last two observations of a group of data</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492130#M31725</link>
      <description>&lt;P&gt;If you want the last observation, you will need to sort your data.&amp;nbsp; Easiest for your purposes:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=have;&lt;/P&gt;
&lt;P&gt;by id descending date descending time;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then you can select the first two observations for each ID:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;if first.id then counter=1;&lt;/P&gt;
&lt;P&gt;else counter + 1;&lt;/P&gt;
&lt;P&gt;if counter &amp;lt;= 2;&lt;/P&gt;
&lt;P&gt;drop counter;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Sep 2018 00:44:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492130#M31725</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-09-04T00:44:45Z</dc:date>
    </item>
    <item>
      <title>Re: how to get the last two observations of a group of data</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492207#M31735</link>
      <description>&lt;P&gt;What did you intend dt to be? You create this variable (BTW, it will always end up zero), but do not do anything with it besides dropping it.&lt;/P&gt;
&lt;P&gt;If you want the last two observations within a group, sort in reverse order, set a counter to 1 at first., and counter + 1 else, and use a subsetting if for counter &amp;lt;= 2.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by id descending date descending time;
run;

data want;
set have;
by id;
if first.id
then counter = 1;
else counter + 1;
if counter &amp;lt;= 2;
drop counter;
run;

proc sort data=want;
by id date time;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 04 Sep 2018 06:50:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/how-to-get-the-last-two-observations-of-a-group-of-data/m-p/492207#M31735</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-09-04T06:50:45Z</dc:date>
    </item>
  </channel>
</rss>

