<?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: creating unique window periods in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/514005#M138575</link>
    <description>&lt;P&gt;See if this helps&lt;/P&gt;
&lt;P&gt;a lazy solution though, my apologies as caffeine didn't kick in today yet&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input obs	ptid	(indexdate	start	end) (:mmddyy10.)	duration	flag $;
format indexdate	start	end mmddyy10.;
cards;
1	1	2/18/2018	02/28/17	5/30/2017	.	.
2	1	2/18/2018	6/1/2017	8/1/2017	2	y
3	1	2/18/2018	10/30/2017	11/30/2017	90	n
4	1	2/18/2018	12/1/2017	4/15/2018	1	y
;

data w;
set have;
by ptid;
if flag ne 'y' then grp +1;
run;

proc sql;
create table want(drop=grp) as
select *,min(start) as New_start format=mmddyy10.,max(end) as new_end format=mmddyy10.
from w
group by ptid, grp;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 16 Nov 2018 17:57:20 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-11-16T17:57:20Z</dc:date>
    <item>
      <title>creating unique window periods</title>
      <link>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/513990#M138563</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;
&lt;P&gt;below is a table 'have'.&amp;nbsp; I created the 'duration' column in it that looks at the duration between the 'enddate' of the previous observation and 'startdate' of the next record using the 'lag' function. I flagged any duration &amp;lt;32 as Y. For consecutive observation where the&amp;nbsp; duration&amp;nbsp; &amp;lt; 32 , thos have to be grouped together to create a unique period i.e. the dates of obs 1 and 2 have to be combined to get the new_startdate and new_enddate i.e 02/30/2017 to 8/1/2017.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is possible that more than three obs with duration &amp;lt;32 could be combined to get&amp;nbsp; the new_startdate and new_enddate.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Similarly for observation 3 and 4 I had the new_startdate and new_enddate i.e 1&lt;SPAN&gt;0/30/2017 to&amp;nbsp;4/15/2018.&lt;/SPAN&gt; I have thousands of such ids for each of which I need to do the steps to get the dataset 'want'&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How can I accomplish the dataset 'want'? Please let me know. I need advice urgently.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;have:&lt;/P&gt;
&lt;TABLE width="665"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;obs&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ptid&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;index date&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;start&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;end&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;duration&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;flag&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;02/30/17&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;5/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;6/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;8/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;2.00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;y&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;10/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;11/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;90.00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;n&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;12/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;4/15/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;1.00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;y&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need to have this dataset 'want' below with the new_start and new_end columns:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="842"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;obs&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ptid&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;index date&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;start&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;end&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;duration&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;flag&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;New_start&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;New_end&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;02/30/17&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;5/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;02/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;8/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;6/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;8/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;2.00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;y&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;02/30/17&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;8/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;10/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;11/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;90.00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;n&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;10/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;4/15/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;2/18/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;12/1/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="129"&gt;
&lt;P&gt;4/15/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="75"&gt;
&lt;P&gt;1.00&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;y&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="82"&gt;
&lt;P&gt;10/30/2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;4/15/2018&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Fri, 16 Nov 2018 17:26:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/513990#M138563</guid>
      <dc:creator>dr2014</dc:creator>
      <dc:date>2018-11-16T17:26:23Z</dc:date>
    </item>
    <item>
      <title>Re: creating unique window periods</title>
      <link>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/513998#M138570</link>
      <description>&lt;P&gt;Even a leap year has only 29 days in feb if i m not wrong &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="665"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="129"&gt;
&lt;P&gt;&lt;FONT color="#FF0000"&gt;02/30/17&lt;/FONT&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Fri, 16 Nov 2018 17:41:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/513998#M138570</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-11-16T17:41:49Z</dc:date>
    </item>
    <item>
      <title>Re: creating unique window periods</title>
      <link>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/514001#M138572</link>
      <description>&lt;P&gt;Please excuse the example. I hope its still understandable.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 16 Nov 2018 17:48:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/514001#M138572</guid>
      <dc:creator>dr2014</dc:creator>
      <dc:date>2018-11-16T17:48:40Z</dc:date>
    </item>
    <item>
      <title>Re: creating unique window periods</title>
      <link>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/514005#M138575</link>
      <description>&lt;P&gt;See if this helps&lt;/P&gt;
&lt;P&gt;a lazy solution though, my apologies as caffeine didn't kick in today yet&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input obs	ptid	(indexdate	start	end) (:mmddyy10.)	duration	flag $;
format indexdate	start	end mmddyy10.;
cards;
1	1	2/18/2018	02/28/17	5/30/2017	.	.
2	1	2/18/2018	6/1/2017	8/1/2017	2	y
3	1	2/18/2018	10/30/2017	11/30/2017	90	n
4	1	2/18/2018	12/1/2017	4/15/2018	1	y
;

data w;
set have;
by ptid;
if flag ne 'y' then grp +1;
run;

proc sql;
create table want(drop=grp) as
select *,min(start) as New_start format=mmddyy10.,max(end) as new_end format=mmddyy10.
from w
group by ptid, grp;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 16 Nov 2018 17:57:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/514005#M138575</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-11-16T17:57:20Z</dc:date>
    </item>
    <item>
      <title>Re: creating unique window periods</title>
      <link>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/515093#M138965</link>
      <description>&lt;P&gt;Thanks for your reply &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;and apologies for the delay. I had to stop working on this concern as data was insufficient and had to look into more urgent tasks. Nonetheless I will test it on available data and reply.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Nov 2018 14:02:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/creating-unique-window-periods/m-p/515093#M138965</guid>
      <dc:creator>dr2014</dc:creator>
      <dc:date>2018-11-21T14:02:21Z</dc:date>
    </item>
  </channel>
</rss>

