<?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 Combine overlapping dates while keeping non-continuous intervals separate in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590847#M169160</link>
    <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset where there are multiple lines per ID, with dates indicating exposure during a period of time. Some of the dates overlap, some do not. Some dates are completely within the time period of earlier or later datalines, while some only overlap certain months. Also, for some people there may be gaps before becoming exposed again.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I would like to do is combine the overlapping periods so that I keep the earliest start and latest end dates for intervals that are continuously overlapping. However, if there is a gap (even if just one day) between the intervals, I would like to keep them separate. Therefore, people can still have multiple lines if they have multiple gaps. I just want to make sure I don't attribute non-exposure periods as being exposed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've searched on this board and I can't seem to keep the gaps.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HAVE:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Start&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;10/24/13&lt;/TD&gt;&lt;TD&gt;1/21/15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;9/25/15&lt;/TD&gt;&lt;TD&gt;11/19/16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;1/22/16&lt;/TD&gt;&lt;TD&gt;1/21/17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;12/12/16&lt;/TD&gt;&lt;TD&gt;12/31/17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;1/22/17&lt;/TD&gt;&lt;TD&gt;1/21/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;3/30/17&lt;/TD&gt;&lt;TD&gt;2/6/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;6/30/17&lt;/TD&gt;&lt;TD&gt;9/27/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;9/20/17&lt;/TD&gt;&lt;TD&gt;9/19/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;9/24/17&lt;/TD&gt;&lt;TD&gt;9/23/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;10/13/17&lt;/TD&gt;&lt;TD&gt;12/31/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;10/23/17&lt;/TD&gt;&lt;TD&gt;10/23/18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WANT:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;10/24/13&lt;/TD&gt;&lt;TD&gt;1/21/15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;9/25/15&lt;/TD&gt;&lt;TD&gt;2/6/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;6/30/17&lt;/TD&gt;&lt;TD&gt;12/31/18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Mon, 23 Sep 2019 08:43:30 GMT</pubDate>
    <dc:creator>soomx</dc:creator>
    <dc:date>2019-09-23T08:43:30Z</dc:date>
    <item>
      <title>Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590847#M169160</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset where there are multiple lines per ID, with dates indicating exposure during a period of time. Some of the dates overlap, some do not. Some dates are completely within the time period of earlier or later datalines, while some only overlap certain months. Also, for some people there may be gaps before becoming exposed again.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I would like to do is combine the overlapping periods so that I keep the earliest start and latest end dates for intervals that are continuously overlapping. However, if there is a gap (even if just one day) between the intervals, I would like to keep them separate. Therefore, people can still have multiple lines if they have multiple gaps. I just want to make sure I don't attribute non-exposure periods as being exposed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've searched on this board and I can't seem to keep the gaps.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HAVE:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Start&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;10/24/13&lt;/TD&gt;&lt;TD&gt;1/21/15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;9/25/15&lt;/TD&gt;&lt;TD&gt;11/19/16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;1/22/16&lt;/TD&gt;&lt;TD&gt;1/21/17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;12/12/16&lt;/TD&gt;&lt;TD&gt;12/31/17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;1/22/17&lt;/TD&gt;&lt;TD&gt;1/21/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV&gt;ID_A&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;3/30/17&lt;/TD&gt;&lt;TD&gt;2/6/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;6/30/17&lt;/TD&gt;&lt;TD&gt;9/27/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;9/20/17&lt;/TD&gt;&lt;TD&gt;9/19/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;9/24/17&lt;/TD&gt;&lt;TD&gt;9/23/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;10/13/17&lt;/TD&gt;&lt;TD&gt;12/31/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;10/23/17&lt;/TD&gt;&lt;TD&gt;10/23/18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WANT:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;10/24/13&lt;/TD&gt;&lt;TD&gt;1/21/15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;9/25/15&lt;/TD&gt;&lt;TD&gt;2/6/18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;6/30/17&lt;/TD&gt;&lt;TD&gt;12/31/18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 23 Sep 2019 08:43:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590847#M169160</guid>
      <dc:creator>soomx</dc:creator>
      <dc:date>2019-09-23T08:43:30Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590854#M169164</link>
      <description>&lt;P&gt;HI&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/203140"&gt;@soomx&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;try this step by step approach:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID $ Start : mmddyy8. End : mmddyy8.;
format Start mmddyy10. End mmddyy10.;
cards;
ID_A 10/24/13 1/21/15
ID_A 9/25/15 11/19/16
ID_A 1/22/16 1/21/17
ID_A 12/12/16 12/31/17
ID_A 1/22/17 1/21/18
ID_A 3/30/17 2/6/18
ID_B 6/30/17 9/27/18
ID_B 9/20/17 9/19/18
ID_B 9/24/17 9/23/18
ID_B 10/13/17 12/31/18
ID_B 10/23/17 10/23/18
; 
run;

data have2;
set
  have(keep = ID Start in=inStart rename=(Start=date))
  have(keep = ID End   in=inEnd   rename=(End  =date))
;
if inStart then marker = 1;
           else marker =-1;

run;

proc sort data = have2;
  by ID Date;
run;

data have3;
  set have2;
  by ID;
  if first.ID then cumulator = 0;
  cumulator + marker;
run;

data have4;
  set have3;
  by ID;
 
  if first.ID or lag(cumulator) = 0 then
    do;
      retain Start End;
      format Start mmddyy10. End mmddyy10.;
      Start = Date;
      End   = Date;
    end;

  Start = Start &amp;gt;&amp;lt; Date;
  End   = End   &amp;lt;&amp;gt; Date;

  if cumulator = 0 then output;
  keep ID Start End;
run;
proc print;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2019 09:19:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590854#M169164</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2019-09-23T09:19:24Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590895#M169186</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID $ Start : mmddyy8. End : mmddyy8.;
format Start mmddyy10. End mmddyy10.;
cards;
ID_A 10/24/13 1/21/15
ID_A 9/25/15 11/19/16
ID_A 1/22/16 1/21/17
ID_A 12/12/16 12/31/17
ID_A 1/22/17 1/21/18
ID_A 3/30/17 2/6/18
ID_B 6/30/17 9/27/18
ID_B 9/20/17 9/19/18
ID_B 9/24/17 9/23/18
ID_B 10/13/17 12/31/18
ID_B 10/23/17 10/23/18
; 
run;
data temp;
 set have;
 by id;
 dif=start-lag(end);
 if first.id then dif=.;
 if first.id or dif&amp;gt;1 then group+1;
run;
data want;
do until(last.group);
  set temp;
  by group;
  if first.group then s=start;
end;
e=end;
format s e mmddyy10.;
drop start end dif;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 23 Sep 2019 12:58:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590895#M169186</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-23T12:58:10Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590920#M169197</link>
      <description>&lt;P&gt;OK. No problem.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID $ Start : mmddyy8. End : mmddyy8.;
format Start mmddyy10. End mmddyy10.;
cards;
ID_A 10/24/13 1/21/15
ID_A 11/24/13 1/21/14
ID_A 9/25/15 11/19/16
ID_A 1/22/16 1/21/17
ID_A 12/12/16 12/31/17
ID_A 1/22/17 1/21/18
ID_A 3/30/17 2/6/18
ID_B 6/30/17 9/27/18
ID_B 9/20/17 9/19/18
ID_B 9/24/17 9/23/18
ID_B 10/13/17 12/31/18
ID_B 10/23/17 10/23/18
; 
run;
data temp;
 set have;
 by id;
 dif=start-lag(end);
 if first.id then dif=.;
 if first.id or dif&amp;gt;1 then group+1;
run;
proc summary data=temp nway;
class id group;
var start end;
output out=want min(start)= max(end)=;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 23 Sep 2019 13:47:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/590920#M169197</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-23T13:47:32Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591032#M169256</link>
      <description>&lt;P&gt;&lt;STRIKE&gt;Thank you so much! It worked perfectly.&lt;/STRIKE&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;EDIT: Revised. The code by Ksharp didn't quite work when dates were entirely within other intervals.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2019 23:45:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591032#M169256</guid>
      <dc:creator>soomx</dc:creator>
      <dc:date>2019-09-23T23:45:50Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591060#M169264</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for checking the code. Your code works perfectly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can't seem to respond to your message, but I had a quick follow-up question.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;One question I had was, what to do if I allow for a gap of 1 day between two intervals and count that as one continuous one.&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;DIV class=" dgrid-row dgrid-row-even ui-state-default dgrid-selected ui-state-active"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=" dgrid-row dgrid-row-even ui-state-default dgrid-selected ui-state-active"&gt;&amp;nbsp;ID Start End &lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;30JUN2017&lt;/TD&gt;&lt;TD&gt;27SEP2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;20SEP2017&lt;/TD&gt;&lt;TD&gt;19SEP2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;20SEP2017&lt;/TD&gt;&lt;TD&gt;19SEP2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;24SEP2017&lt;/TD&gt;&lt;TD&gt;23SEP2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;13OCT2017&lt;/TD&gt;&lt;TD&gt;31DEC2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;23OCT2017&lt;/TD&gt;&lt;TD&gt;23OCT2018&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Using your code gives me:&lt;/P&gt;&lt;DIV class=" dgrid-row dgrid-row-odd ui-state-default"&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;30JUN2017&lt;/TD&gt;&lt;TD&gt;19SEP2017&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV class=" dgrid-row dgrid-row-even ui-state-default dgrid-selected ui-state-active"&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;20SEP2017&lt;/TD&gt;&lt;TD&gt;31DEC2018&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If the end date is &amp;lt;=1 day of the next start date, I would like to combine into this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_A&lt;/TD&gt;&lt;TD&gt;30JUN2017&lt;/TD&gt;&lt;TD&gt;31DEC2018&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this possible to do within the last data step?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 23 Sep 2019 23:47:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591060#M169264</guid>
      <dc:creator>soomx</dc:creator>
      <dc:date>2019-09-23T23:47:16Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591078#M169269</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/203140"&gt;@soomx&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You already have an answer for your follow up question. It was&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;who already gave you the code, which requires to replace only one one to two &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data temp;
 set have;
 by id;
 dif=start-lag(end);
 if first.id then dif=.;
 if first.id or dif&amp;gt;2 then group+1; /* here is the line to change */
run;
proc summary data=temp nway;
class id group;
var start end;
output out=want min(start)= max(end)=;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Tue, 24 Sep 2019 04:49:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591078#M169269</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2019-09-24T04:49:41Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591135#M169300</link>
      <description>&lt;P&gt;Hi.&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp; thanks keep finding inside/data error .&lt;/P&gt;
&lt;P&gt;I think this could include everything , but not efficient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID $ Start : mmddyy8. End : mmddyy8.;
format Start mmddyy10. End mmddyy10.;
cards;
ID_A 10/24/13 1/21/18
ID_A 11/24/13 1/21/14
ID_A 11/24/15 1/21/17
ID_A 9/25/15 11/19/16
ID_A 1/22/16 1/21/17
ID_A 12/12/16 12/31/17
ID_A 1/22/17 1/21/18
ID_A 1/30/18 2/6/18
ID_B 6/30/17 9/27/18
ID_B 9/20/17 9/19/18
ID_B 9/24/17 9/23/18
ID_B 10/13/17 12/31/18
ID_B 10/23/17 10/23/18
; 
run;
data temp;
 set have;
 do date=start to end;
  output;
 end;
keep id date;
format date mmddyy10.;
run;
proc sort data=temp nodupkey sortsize=max noequals;
by id date;
run;
data temp1;
 set temp;
 by id;
 if first.id or dif(date)&amp;gt;1 then group+1;
run;

proc summary data=temp1 ;
by id group;
var date;
output out=want min=start max=end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 24 Sep 2019 11:36:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591135#M169300</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-24T11:36:27Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591142#M169302</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Few years ago I was exposed to a similar problem on &amp;gt;1MLN customer's base, back then it punched me all possible cases. Learning is pain &lt;span class="lia-unicode-emoji" title=":winking_face_with_tongue:"&gt;😜&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Tue, 24 Sep 2019 11:57:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591142#M169302</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2019-09-24T11:57:12Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591151#M169308</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp; . That is awful task , but I like challenge . Hope I have some time to keep researching more BETTER code .&lt;/P&gt;</description>
      <pubDate>Tue, 24 Sep 2019 12:41:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591151#M169308</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-24T12:41:52Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591159#M169310</link>
      <description>&lt;P&gt;Hi.&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp; ,&lt;/P&gt;
&lt;P&gt;I figure out a Hash solution.&lt;/P&gt;
&lt;P&gt;What do you think? Or you could test some data ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data have;
input ID $ Start : mmddyy8. End : mmddyy8.;
format Start mmddyy10. End mmddyy10.;
cards;
ID_A 10/24/13 1/21/18
ID_A 11/24/13 1/21/14
ID_A 11/24/15 1/21/17
ID_A 9/25/15 11/19/16
ID_A 1/22/16 1/21/17
ID_A 12/12/16 12/31/17
ID_A 1/22/17 1/21/18
ID_A 1/30/18 2/6/18
ID_B 6/30/17 9/27/18
ID_B 9/20/17 9/19/18
ID_B 9/24/17 9/23/18
ID_B 10/13/17 12/31/18
ID_B 10/23/17 10/23/18
; 

data want;
 if _n_=1 then do;
  declare hash h(ordered:'y');
  declare hiter hi('h');
  h.definekey('date');
  h.definedata('date');
  h.definedone();
 end;
do until(last.id);
 set have;
 by id;
 do date=start to end;
   h.ref();
 end;
end;

rc=hi.first();
do i=1 by 1 while(rc=0);
 if i=1 then do;_start=date;_date=date;end;
 else do;
   if _date+1 ne date then do;
    _end=_date;output;
    _start=date;
   end;
    _date=date;
  end;
  rc=hi.next();
end;
 _end=_date;output;

h.clear();

keep id _start _end;
format _start _end mmddyy10.;
run;&lt;/PRE&gt;</description>
      <pubDate>Tue, 24 Sep 2019 13:52:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/591159#M169310</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-24T13:52:10Z</dc:date>
    </item>
    <item>
      <title>Re: Combine overlapping dates while keeping non-continuous intervals separate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/718280#M222260</link>
      <description>&lt;P&gt;Thanks for the inspiration!&amp;nbsp; This helps me too.&amp;nbsp; But I'm pretty sure, so math works in every case, that we should sort by your marker variable.&amp;nbsp; Incase we have &lt;STRONG&gt;Start&lt;/STRONG&gt; and &lt;STRONG&gt;End&lt;/STRONG&gt; dates that coincide and are given in &lt;STRONG&gt;HAVE&lt;/STRONG&gt; in the wrong order, we do want the accumulator to be added to before being subtracted.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data = have2;
  by ID Date /**/ descending marker /**/;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 10 Feb 2021 15:53:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-overlapping-dates-while-keeping-non-continuous-intervals/m-p/718280#M222260</guid>
      <dc:creator>PhilC</dc:creator>
      <dc:date>2021-02-10T15:53:52Z</dc:date>
    </item>
  </channel>
</rss>

