<?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: Identify and Concatenate  rows with same ID and consecutive coverage of a range of time into one in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280980#M56889</link>
    <description>&lt;P&gt;(ID + start date) is the unique key.&lt;/P&gt;</description>
    <pubDate>Wed, 29 Jun 2016 04:13:45 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2016-06-29T04:13:45Z</dc:date>
    <item>
      <title>Identify and Concatenate  rows with same ID and consecutive coverage of a range of time into one row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280818#M56815</link>
      <description>&lt;P&gt;I am dealing with health care enrollment data right now, facing the following problem.&lt;/P&gt;&lt;P&gt;Raw data looks like&lt;/P&gt;&lt;P&gt;ID &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stard_date &amp;nbsp; &amp;nbsp;end_date&lt;/P&gt;&lt;P&gt;P1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; B&lt;/P&gt;&lt;P&gt;P1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;B+1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C&lt;/P&gt;&lt;P&gt;P1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C+180 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; D&lt;/P&gt;&lt;P&gt;P2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; F&lt;/P&gt;&lt;P&gt;P2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;F+1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; G &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;P3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; H &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The expected output is like&lt;/P&gt;&lt;P&gt;ID &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stard_date &amp;nbsp; &amp;nbsp;end_date&lt;/P&gt;&lt;P&gt;P1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C&lt;/P&gt;&lt;P&gt;P1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C+180 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; D&lt;/P&gt;&lt;P&gt;P2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;E &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;G&lt;/P&gt;&lt;P&gt;P3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; H &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The criteria of difining &amp;nbsp;consecutive coverage or not could be parameterized, for example, in above example, if there is only 1 day gap, we consider it as consecutive, if the gap is large enough( 180 days), we don't concatenate them( see P1).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In addition, in order to make the ID as unique key, I am thinking about to change the ID as "ID+start date"&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; &amp;nbsp; stard_date &amp;nbsp; &amp;nbsp;end_date&lt;/P&gt;&lt;P&gt;P1+A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C&lt;/P&gt;&lt;P&gt;P1 +C+180 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C+180 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;D&lt;/P&gt;&lt;P&gt;P2 +E &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; E &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G&lt;/P&gt;&lt;P&gt;P3 +H &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; H &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jun 2016 15:11:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280818#M56815</guid>
      <dc:creator>Vison</dc:creator>
      <dc:date>2016-06-28T15:11:01Z</dc:date>
    </item>
    <item>
      <title>Re: Identify and Concatenate  rows with same ID and consecutive coverage of a range of time into one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280965#M56885</link>
      <description>&lt;P&gt;Should be good if you post some real date value rather than character .&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 $   stard_date : date9.   end_date : date9.;
format stard_date end_date  date9.;
cards;
P1            01jan2012                   01jun2012
P1            02jun2012              01jun2013
P1             01jun2014           01dec2014
P2            01jun2012               01dec2012
P2              02dec2012             01jun2013                
P2                01jun2014            01jun2015
;
run;
data temp;
 set have;
 n+1;
 temp=stard_date; output;
 temp=end_date; output;
 drop stard_date end_date;
 format temp date9.;
run;
data temp;
 set temp;
 by id n;
 if first.id or (first.n and temp gt lag(temp)+1) then group+1;
run;
data x;
 set temp;
 by group;
 if first.group or last.group;
run;
proc transpose data=x out=want(drop=_name_);
by id group;
var temp;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 29 Jun 2016 02:34:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280965#M56885</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-06-29T02:34:08Z</dc:date>
    </item>
    <item>
      <title>Re: Identify and Concatenate  rows with same ID and consecutive coverage of a range of time into one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280980#M56889</link>
      <description>&lt;P&gt;(ID + start date) is the unique key.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jun 2016 04:13:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Identify-and-Concatenate-rows-with-same-ID-and-consecutive/m-p/280980#M56889</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2016-06-29T04:13:45Z</dc:date>
    </item>
  </channel>
</rss>

