<?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: Retaining last date-time ignores single valid entry in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217467#M53509</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@PGstats: Thanks..it works perfect. Just for academic purposes, can you explain how it works..I find it difficult to understand when SAS statements appear between data and set statements.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Apr 2015 16:27:33 GMT</pubDate>
    <dc:creator>lyton80</dc:creator>
    <dc:date>2015-04-08T16:27:33Z</dc:date>
    <item>
      <title>Retaining last date-time ignores single valid entry</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217464#M53506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using a macro like this below to select the last non null date in a de-duping process.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro retbl(nvar=age,i=1);&lt;/P&gt;&lt;P&gt;data kplastn&amp;amp;i;&lt;/P&gt;&lt;P&gt;set datasrt(keep=&amp;amp;nvar hosp_visit_id event_Time);&lt;/P&gt;&lt;P&gt;length tempn 8.;&lt;/P&gt;&lt;P&gt;by hosp_visit_id evnt_Time;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;retain tempn;&lt;/P&gt;&lt;P&gt;if&amp;nbsp; first.hosp_visit_id then tempn=.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if missing(&amp;amp;nvar) then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nvar = input(tempn, 8.);&lt;/P&gt;&lt;P&gt;&amp;nbsp; else tempn=input(&amp;amp;nvar,??8.);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if last.hosp_visit_id ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%retbl(nvar=Date_Time,i=6)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;This works fine unless the date is missing for all the data except only one valid entry.&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 13.3333330154419px; line-height: 1.5em;"&gt;illustration:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;input data:&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;obs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date_time&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 13.3333330154419px;"&gt; 05APR15:10:40:20&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;output &lt;/SPAN&gt;data set&lt;SPAN style="font-size: 13.3333330154419px;"&gt; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;obs&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 13.3333330154419px;"&gt;Date_time&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;desired output &lt;/STRONG&gt;&lt;STRONG&gt;data set&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;obs Data_time&lt;/P&gt;&lt;P&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 13.3333330154419px;"&gt; 05APR15:10:40:20&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanksa&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Apr 2015 19:04:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217464#M53506</guid>
      <dc:creator>lyton80</dc:creator>
      <dc:date>2015-04-07T19:04:33Z</dc:date>
    </item>
    <item>
      <title>Re: Retaining last date-time ignores single valid entry</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217465#M53507</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is not clear what you want since your keep list contains three variables and your example outputs only one. It is not clear either whether you want Date_Time to be character or numeric.&lt;/P&gt;&lt;P&gt;You could build upon the following simple datastep structure:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data kplastn6;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;do until(last.Hosp_Visit_Id);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; set dataSrt; by Hosp_Visit_Id;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; if not missing(Date_Time) then tempDT = Date_Time;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Date_Time = tempDT;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;keep Hosp_Visit_Id Event_Time Date_Time;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Apr 2015 20:54:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217465#M53507</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-04-07T20:54:15Z</dc:date>
    </item>
    <item>
      <title>Re: Retaining last date-time ignores single valid entry</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217466#M53508</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In case you wouldn't select any record for hosp_visit if ALL event_times are missing then you could get away with something as below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data kplastn&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set datasrt(keep=&amp;amp;nvar hosp_visit_id event_Time where=(not missing(event_Time)));&lt;/P&gt;&lt;P&gt;&amp;nbsp; by hosp_visit_id evnt_Time;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if last.hosp_visit_id;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Apr 2015 22:54:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217466#M53508</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2015-04-07T22:54:19Z</dc:date>
    </item>
    <item>
      <title>Re: Retaining last date-time ignores single valid entry</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217467#M53509</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@PGstats: Thanks..it works perfect. Just for academic purposes, can you explain how it works..I find it difficult to understand when SAS statements appear between data and set statements.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Apr 2015 16:27:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217467#M53509</guid>
      <dc:creator>lyton80</dc:creator>
      <dc:date>2015-04-08T16:27:33Z</dc:date>
    </item>
    <item>
      <title>Re: Retaining last date-time ignores single valid entry</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217468#M53510</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This datastep programming method is called the &lt;STRONG&gt;DOW loop&lt;/STRONG&gt;. I learned about it on this forum! The not so obvious part of it for me was that you can refer to &lt;STRONG&gt;last.Hosp_Visit_Id&lt;/STRONG&gt; &lt;EM&gt;before&lt;/EM&gt; the &lt;STRONG&gt;BY&lt;/STRONG&gt; statement. Once you know that, the rest is well explained in many published papers. For example, in &lt;A href="http://support.sas.com/resources/papers/proceedings09/038-2009.pdf" title="http://support.sas.com/resources/papers/proceedings09/038-2009.pdf"&gt;http://support.sas.com/resources/papers/proceedings09/038-2009.pdf.&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Apr 2015 21:37:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Retaining-last-date-time-ignores-single-valid-entry/m-p/217468#M53510</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-04-08T21:37:50Z</dc:date>
    </item>
  </channel>
</rss>

