<?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 a sub-ID for repeated measures data by date. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806192#M317602</link>
    <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WANT;
  set HAVE;
  by ID DATE;
  if ID=lag(ID) and DATE &amp;gt; lag(DATE)+60 then GROUP+1; 
  else if first.ID then GROUP+1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV&gt;
&lt;DIV id="IDX"&gt;
&lt;TABLE class="table" width="185px" aria-label="Data Set WORK.WANT"&gt;&lt;CAPTION aria-label="Data Set WORK.WANT"&gt;&amp;nbsp;&lt;/CAPTION&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col" width="40px"&gt;ID&lt;/TH&gt;
&lt;TH class="r header" scope="col" width="100.292px"&gt;DATE&lt;/TH&gt;
&lt;TH class="r header" scope="col" width="43.375px"&gt;GROUP&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;100&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;08SEP2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;100&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;08SEP2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;100&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;12SEP2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;19JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;19JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14AUG2019&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14AUG2019&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;22AUG2019&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;12JAN2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;03MAR2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 06 Apr 2022 06:15:17 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2022-04-06T06:15:17Z</dc:date>
    <item>
      <title>Creating a sub-ID for repeated measures data by date.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806163#M317583</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have data here with 3 ids. I need to create a new variable I'm calling 'clusterID' that goes through the original ids and creates new clusters based on the dates. Date groupings that are 60 days apart should be made a new cluster and counted off. In this example there will be a total of 6 clusterIDs. Person 100 has 1, person 161 has 2, and person 222 has 3. The data is messy and dates are repeated (there are other variables I can't just abandon).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA have;&lt;BR /&gt;input id date mmddyy10.;&lt;BR /&gt;format date mmddyy10.;&lt;BR /&gt;CARDS;&lt;BR /&gt;100 09/08/2016&lt;BR /&gt;100 09/08/2016&lt;BR /&gt;100 09/12/2016&lt;BR /&gt;161 06/14/2017&lt;BR /&gt;161 06/14/2017&lt;BR /&gt;161 06/19/2017&lt;BR /&gt;161 06/19/2017&lt;BR /&gt;161 08/14/2019&lt;BR /&gt;161 08/14/2019&lt;BR /&gt;161 08/22/2019&lt;BR /&gt;222 01/12/2016&lt;BR /&gt;222 05/10/2016&lt;BR /&gt;222 05/10/2016&lt;BR /&gt;222 05/10/2016&lt;BR /&gt;222 05/10/2016&lt;BR /&gt;222 03/03/2017&lt;BR /&gt;;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;DATA want;&lt;BR /&gt;input id date mmddyy10. clusterid;&lt;BR /&gt;format date mmddyy10.;&lt;BR /&gt;CARDS;&lt;BR /&gt;100 09/08/2016 1&lt;BR /&gt;100 09/08/2016 1&lt;BR /&gt;100 09/12/2016 1&lt;BR /&gt;161 06/14/2017 2&lt;BR /&gt;161 06/14/2017 2&lt;BR /&gt;161 06/19/2017 2&lt;BR /&gt;161 06/19/2017 2&lt;BR /&gt;161 08/14/2019 3&lt;BR /&gt;161 08/14/2019 3&lt;BR /&gt;161 08/22/2019 3&lt;BR /&gt;222 01/12/2016 4&lt;BR /&gt;222 05/10/2016 5&lt;BR /&gt;222 05/10/2016 5&lt;BR /&gt;222 05/10/2016 5&lt;BR /&gt;222 05/10/2016 5&lt;BR /&gt;222 03/03/2017 6&lt;BR /&gt;;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What I've Tried:&lt;/P&gt;
&lt;P&gt;Previously, someone helped me in another situation and gave me code that will separate the dates by 60days and keep just the first date, this is shown in the 'oldwant' table below. I'm unsure if this helps, but it does give start dates for clusters.&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 oldwant (drop=_:);
  do until (_nxt_id^=id or date+60&amp;lt;_nxt_date);
    merge have
          have (firstobs=2 keep=id date rename=(id=_nxt_id date=_nxt_date));
    if _init_date=. then _init_date=date;
  end;
  date=_init_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Manhort_0-1649195111862.png" style="width: 280px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/70143i846FFBBD54BA11D4/image-dimensions/280x196?v=v2" width="280" height="196" role="button" title="Manhort_0-1649195111862.png" alt="Manhort_0-1649195111862.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any help is appreciated thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 05 Apr 2022 21:48:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806163#M317583</guid>
      <dc:creator>Manhort</dc:creator>
      <dc:date>2022-04-05T21:48:47Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a sub-ID for repeated measures data by date.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806192#M317602</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WANT;
  set HAVE;
  by ID DATE;
  if ID=lag(ID) and DATE &amp;gt; lag(DATE)+60 then GROUP+1; 
  else if first.ID then GROUP+1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV&gt;
&lt;DIV id="IDX"&gt;
&lt;TABLE class="table" width="185px" aria-label="Data Set WORK.WANT"&gt;&lt;CAPTION aria-label="Data Set WORK.WANT"&gt;&amp;nbsp;&lt;/CAPTION&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col" width="40px"&gt;ID&lt;/TH&gt;
&lt;TH class="r header" scope="col" width="100.292px"&gt;DATE&lt;/TH&gt;
&lt;TH class="r header" scope="col" width="43.375px"&gt;GROUP&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;100&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;08SEP2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;100&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;08SEP2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;100&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;12SEP2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;19JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;19JUN2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14AUG2019&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;14AUG2019&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;161&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;22AUG2019&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;12JAN2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;10MAY2016&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="40px" class="r data"&gt;222&lt;/TD&gt;
&lt;TD width="100.292px" class="r data"&gt;03MAR2017&lt;/TD&gt;
&lt;TD width="43.375px" class="r data"&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Apr 2022 06:15:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806192#M317602</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2022-04-06T06:15:17Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a sub-ID for repeated measures data by date.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806199#M317604</link>
      <description>&lt;P&gt;This creates your want dataset:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
by id;
if first.id or dif(date) &amp;gt; 60 then clusterid + 1;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 06 Apr 2022 06:58:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806199#M317604</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-04-06T06:58:47Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a sub-ID for repeated measures data by date.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806252#M317625</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA have;
input id date mmddyy10.;
format date mmddyy10.;
CARDS;
100 09/08/2016
100 09/08/2016
100 09/12/2016
161 06/14/2017
161 06/14/2017
161 06/19/2017
161 06/19/2017
161 08/14/2019
161 08/14/2019
161 08/22/2019
222 01/12/2016
222 05/10/2016
222 05/10/2016
222 05/10/2016
222 05/10/2016
222 03/03/2017
;
RUN;

data want;
 set have;
 by id;
 retain start;
 if first.id or date-start&amp;gt;60 then do;start=date;clusterid+1;end;
 drop start;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 06 Apr 2022 11:52:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-sub-ID-for-repeated-measures-data-by-date/m-p/806252#M317625</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-04-06T11:52:42Z</dc:date>
    </item>
  </channel>
</rss>

