<?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: Obtain observation Date where an indicator is first observed in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229211#M41458</link>
    <description>&lt;P&gt;The previous one is buggy,&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data want;
set have;
by id stat notsorted;
if first.id then n=0;
if first.stat and stat in ('9', 'F', 'R') and id=lag(id) then n+1;
if n=1;
drop n;
run;&lt;/PRE&gt;</description>
    <pubDate>Fri, 09 Oct 2015 02:03:30 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2015-10-09T02:03:30Z</dc:date>
    <item>
      <title>Obtain observation Date where an indicator is first observed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229209#M41456</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to get for each ID, the date at which a 'status' column first becomes either '9','F', or 'R'.&lt;/P&gt;&lt;P&gt;For the example below, i would want ID 1 to show '12/31/2007' and ID 2 '11/30/2007'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;stat&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;Deliq Hist&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;8/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;9/30/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCC3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;11/30/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCC36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCC369&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1/31/2008&lt;/TD&gt;&lt;TD&gt;CCCCCCCC369F&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2/29/2008&lt;/TD&gt;&lt;TD&gt;CCCCCCC369FF&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3/31/2008&lt;/TD&gt;&lt;TD&gt;CCCCCC369FFC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4/30/2008&lt;/TD&gt;&lt;TD&gt;CCCCC369FFCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5/31/2008&lt;/TD&gt;&lt;TD&gt;CCCC369FFCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6/30/2008&lt;/TD&gt;&lt;TD&gt;CCC369FFCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7/31/2008&lt;/TD&gt;&lt;TD&gt;CC369FFCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;8/31/2008&lt;/TD&gt;&lt;TD&gt;C369FFCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;9/30/2008&lt;/TD&gt;&lt;TD&gt;369FFCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;7/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;9/30/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;11/30/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCCF&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12/31/2007&lt;/TD&gt;&lt;TD&gt;CCCCCCCCCCF9&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 09 Oct 2015 01:07:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229209#M41456</guid>
      <dc:creator>Bassil</dc:creator>
      <dc:date>2015-10-09T01:07:10Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain observation Date where an indicator is first observed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229211#M41458</link>
      <description>&lt;P&gt;The previous one is buggy,&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data want;
set have;
by id stat notsorted;
if first.id then n=0;
if first.stat and stat in ('9', 'F', 'R') and id=lag(id) then n+1;
if n=1;
drop n;
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 09 Oct 2015 02:03:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229211#M41458</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2015-10-09T02:03:30Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain observation Date where an indicator is first observed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229212#M41459</link>
      <description>&lt;P&gt;Simple to do with SQL, taking advantage of auto-remerging&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
select * from have
where stat in ("9","F","R")
group by ID
having date = min(date);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 09 Oct 2015 02:08:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229212#M41459</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-10-09T02:08:46Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain observation Date where an indicator is first observed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229213#M41460</link>
      <description>&lt;P&gt;Or if you want to get also IDs that never reached 9 F or R status in your output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
select * from 
(select distinct ID from have) 
natural left join
(select * from have
where stat in ("9","F","R")
group by ID
having date = min(date));
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 09 Oct 2015 02:19:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229213#M41460</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-10-09T02:19:10Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain observation Date where an indicator is first observed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229215#M41461</link>
      <description>&lt;P&gt;A handy DATA step technique is to go through the data twice:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;length first_date $ 10;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;do until (last.ID);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; by id;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first_date=' ' and stat in ('9', 'F', 'R') then first_date=date;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;do until (last.ID);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; by id;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; output;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;end;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This version assumes DATE is character, but if it's numeric just change the LENGTH statement (and the check for first_date=' ').&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Good luck.&lt;/P&gt;</description>
      <pubDate>Fri, 09 Oct 2015 02:46:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Obtain-observation-Date-where-an-indicator-is-first-observed/m-p/229215#M41461</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2015-10-09T02:46:24Z</dc:date>
    </item>
  </channel>
</rss>

