<?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: Align overlapping time lines across observations by filling gaps. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194847#M36638</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Actually any date range can overlap another, I just update the question to specify the point this is sample data for one group A. once dates are aligned for group A there are only sequently aligned start times and end times without overlapping each other.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in your solution when we do startdt to enddt , for observations where enddt=01-Jan-9999 gives extremely large number of observations to work out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 May 2015 12:35:40 GMT</pubDate>
    <dc:creator>ven</dc:creator>
    <dc:date>2015-05-28T12:35:40Z</dc:date>
    <item>
      <title>Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194845#M36636</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am having a large dataset where I need to avoid overlapping time lines for each data group. My input dataset is as follows for data group A.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA iddates;&lt;/P&gt;&lt;P&gt;INFORMAT gid $1. pid $1. startdt enddt Date11.;&lt;/P&gt;&lt;P&gt;INPUT gid pid startdt enddt;&lt;/P&gt;&lt;P&gt;FORMAT startdt enddt DDMMYY10.;&lt;/P&gt;&lt;P&gt;DATALINES;&lt;/P&gt;&lt;P&gt;A 1 26-Feb-15 26-Apr-2015&lt;/P&gt;&lt;P&gt;A 2 26-Feb-15 30-Apr-2015&lt;/P&gt;&lt;P&gt;A 3 13-Apr-15 23-Apr-2015&lt;/P&gt;&lt;P&gt;A 4 24-Apr-15 01-Jan-9999&lt;/P&gt;&lt;P&gt;A 5 24-Apr-15 01-Jan-9999&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I need to avoid any intersections of timelines and arrange all time s in the ascending order having inserting new records to fill the gaps as follows. Any insights into a solution appreciated. Thank you all for any help.&lt;/P&gt;&lt;P&gt;Once done for Group A there can be one row with sequently aligned start times and end times.&lt;/P&gt;&lt;P&gt;DATA fillgaps;&lt;/P&gt;&lt;P&gt;INFORMAT pid $1. startdt enddt Date11.;&lt;/P&gt;&lt;P&gt;INPUT pid startdt enddt;&lt;/P&gt;&lt;P&gt;FORMAT startdt enddt DDMMYY10.;&lt;/P&gt;&lt;P&gt;DATALINES;&lt;/P&gt;&lt;P&gt;1 26-Feb-15 12-Apr-2015&lt;/P&gt;&lt;P&gt;1 13-Apr-15 23-Apr-2015&lt;/P&gt;&lt;P&gt;1 24-Apr-15 26-Apr-2015&lt;/P&gt;&lt;P&gt;2 26-Feb-15 12-Apr-2015&lt;/P&gt;&lt;P&gt;2 13-Apr-15 23-Apr-2015&lt;/P&gt;&lt;P&gt;2 24-Apr-15 26-Apr-2015&lt;/P&gt;&lt;P&gt;2 27-Apr-15 30-Apr-2015&lt;/P&gt;&lt;P&gt;3 13-Apr-15 23-Apr-2015&lt;/P&gt;&lt;P&gt;4 24-Apr-15 26-Apr-2015&lt;/P&gt;&lt;P&gt;4 27-Apr-15 30-Apr-2015&lt;/P&gt;&lt;P&gt;4 01-May-15 01-Jan-9999&lt;/P&gt;&lt;P&gt;5 24-Apr-15 26-Apr-2015&lt;/P&gt;&lt;P&gt;5 27-Apr-15 30-Apr-2015&lt;/P&gt;&lt;P&gt;5 01-May-15 01-Jan-9999&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 11:32:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194845#M36636</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-28T11:32:00Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194846#M36637</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 not sure about your logic.&amp;nbsp; Why does ID 3 overlap with one, but ID 2 does not?&amp;nbsp; Here is a program which will give you a transposed table, one column per id, each row being one day.&amp;nbsp; It is then a simple matter of going through the dataset to find start stop dates.&lt;/P&gt;&lt;P&gt;DATA iddates;&lt;/P&gt;&lt;P&gt;INFORMAT pid $1. startdt enddt Date9.;&lt;/P&gt;&lt;P&gt;INPUT pid startdt enddt;&lt;/P&gt;&lt;P&gt;FORMAT startdt enddt DDMMYY8.;&lt;/P&gt;&lt;P&gt;DATALINES;&lt;/P&gt;&lt;P&gt;1 26-Feb-15 26-Apr-15&lt;/P&gt;&lt;P&gt;2 26-Feb-15 30-Apr-15&lt;/P&gt;&lt;P&gt;3 13-Apr-15 23-Apr-15&lt;/P&gt;&lt;P&gt;4 24-Apr-15 01-Jan-99&lt;/P&gt;&lt;P&gt;5 24-Apr-15 01-Jan-99&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data inter;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set iddates;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=startdt to enddt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; format i date9.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=inter;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by i pid;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=inter out=i_inter;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var pid;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:03:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194846#M36637</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-05-28T12:03:35Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194847#M36638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Actually any date range can overlap another, I just update the question to specify the point this is sample data for one group A. once dates are aligned for group A there are only sequently aligned start times and end times without overlapping each other.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in your solution when we do startdt to enddt , for observations where enddt=01-Jan-9999 gives extremely large number of observations to work out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:35:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194847#M36638</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-28T12:35:40Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194848#M36639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Why are you giving an end date of 01jan9999 then?&amp;nbsp; Why not just replace that:&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;data inter;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp; set iddates;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp; if enddt="01jan9999"d then enddt=today();&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp; do i=startdt to enddt;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp; format i date9.;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;run;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;I didn't understand your other point.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:41:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194848#M36639</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-05-28T12:41:28Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194849#M36640</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;En, Interesting question. &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt; 01-Jan-99 is &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt; 01-Jan-1999&amp;nbsp; ?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;DATA iddates;
INFORMAT pid $1. startdt enddt Date9.;
INPUT pid startdt enddt;
FORMAT startdt enddt DDMMYY8.;
DATALINES;
1 26-Feb-15 26-Apr-15
2 26-Feb-15 30-Apr-15
3 13-Apr-15 23-Apr-15
4 24-Apr-15 01-Jan-99
5 24-Apr-15 01-Jan-99
;
run;
data key;
 set iddates(keep=startdt rename=(startdt=date))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iddates(keep=enddt rename=(enddt=date) in=inb);
 if inb then date=date+1;
run;
data temp;
 if _n_ eq 1 then do;
&amp;nbsp; declare hash h(dataset:'key');
&amp;nbsp; h.definekey('date');
&amp;nbsp; h.definedone();
 end;
set iddates;
do date = startdt to enddt;
 if h.check()=0 then group+1;output;
end;
keep pid group date;
run;
data want;
 set temp;
 by group;
 retain start;
 if first.group then start=date;
 if last.group then do;end=date;output;end;
format start end date9.;
drop group date;
run;
&lt;/PRE&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;Xia Keshan&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:51:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194849#M36640</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-28T12:51:00Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194850#M36641</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Unable to change the dates, since it will affect the validity of other ids, I need to find out valid ids on a given date by creating time lines as below&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 822px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl80" height="20" width="67"&gt;id&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD align="right" class="xl66"&gt;26-Feb-15&lt;/TD&gt;&lt;TD align="right" class="xl66"&gt;12-Apr-15&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl68"&gt;13-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl68"&gt;23-Apr-15&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;1&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;24-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;26-Apr-15&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl66"&gt;26-Feb-15&lt;/TD&gt;&lt;TD align="right" class="xl66"&gt;12-Apr-15&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl68"&gt;13-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl68"&gt;23-Apr-15&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;24-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;26-Apr-15&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl69"&gt;27-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl69"&gt;30-Apr-15&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;3&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl68"&gt;13-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl68"&gt;23-Apr-15&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;24-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;26-Apr-15&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl69"&gt;27-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl69"&gt;30-Apr-15&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl73"&gt;1-May-15&lt;/TD&gt;&lt;TD align="right" class="xl73"&gt;1-Jan-99&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;5&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;24-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl70"&gt;26-Apr-15&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl74"&gt;&lt;/TD&gt;&lt;TD class="xl74"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;5&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD align="right" class="xl69"&gt;27-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl69"&gt;30-Apr-15&lt;/TD&gt;&lt;TD align="right" class="xl73"&gt;1-May-15&lt;/TD&gt;&lt;TD align="right" class="xl73"&gt;1-Jan-99&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;5&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl65"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl67"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl71"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl72"&gt;&lt;/TD&gt;&lt;TD class="xl74"&gt;&lt;/TD&gt;&lt;TD class="xl74"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;validity&lt;/TD&gt;&lt;TD class="xl76" colspan="2"&gt;ids 1,2 are valid&lt;/TD&gt;&lt;TD class="xl77" colspan="2"&gt;ids 1,2,3 are valid&lt;/TD&gt;&lt;TD class="xl75" colspan="2"&gt;ids 1,2,3,4 are valid&lt;/TD&gt;&lt;TD class="xl78" colspan="2"&gt;ids 2,4,5 are valid&lt;/TD&gt;&lt;TD class="xl79" colspan="2"&gt;ids 4, 5 are vaid&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:03:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194850#M36641</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-28T13:03:24Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194851#M36642</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Keshan,&lt;/P&gt;&lt;P&gt;99 is actually 9999, I've updated the question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your answer looks very valid, will check more and update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:15:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194851#M36642</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-28T13:15:06Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194852#M36643</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;En. I think my code could work. Did you run my code on your new data ?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 14:26:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194852#M36643</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-28T14:26:27Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194853#M36644</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It does, but the problem is when it does startdt to enddt where enddt bcomes 9999-01-01 it creates huge temp dataset which makes the solution unnecessarily data intensive. Trying to find a way to resolve the issue.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 19:41:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194853#M36644</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-28T19:41:34Z</dc:date>
    </item>
    <item>
      <title>Re: Align overlapping time lines across observations by filling gaps.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194854#M36645</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The simplest way is to change '&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;01-Jan-9999'd&amp;nbsp; into a quit large value like&amp;nbsp; '01-Jan-3000'd , then run my code .&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another way is assuming there are no date greater than current day - TODAY() , except &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;'01-Jan-3000'd&amp;nbsp; . then try this one :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data key;&lt;/P&gt;&lt;P&gt; set iddates(keep=startdt rename=(startdt=date))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iddates(keep=enddt rename=(enddt=date) in=inb);&lt;/P&gt;&lt;P&gt; if inb then date=date+1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data temp;&lt;/P&gt;&lt;P&gt; if _n_ eq 1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; declare hash h(dataset:'key');&lt;/P&gt;&lt;P&gt;&amp;nbsp; h.definekey('date');&lt;/P&gt;&lt;P&gt;&amp;nbsp; h.definedone();&lt;/P&gt;&lt;P&gt; end;&lt;/P&gt;&lt;P&gt;set iddates;&lt;/P&gt;&lt;P&gt;do date = startdt to enddt;&lt;/P&gt;&lt;P&gt; if h.check()=0 then group+1;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; if date le today() or year(date)=9999 then output;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;keep pid group date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt; set temp;&lt;/P&gt;&lt;P&gt; by group;&lt;/P&gt;&lt;P&gt; retain start;&lt;/P&gt;&lt;P&gt; if first.group then start=date;&lt;/P&gt;&lt;P&gt; if last.group then do;end=date;output;end;&lt;/P&gt;&lt;P&gt;format start end date9.;&lt;/P&gt;&lt;P&gt;drop group date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 May 2015 12:20:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Align-overlapping-time-lines-across-observations-by-filling-gaps/m-p/194854#M36645</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-29T12:20:25Z</dc:date>
    </item>
  </channel>
</rss>

