<?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: Create a count of people active across months based on start and end date in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821086#M40987</link>
    <description>&lt;P&gt;First, expand the observations over months, then use PROC FREQ:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ym;
set have;
format ym yymmd7.;
ym = intnx("month",start_date,0,"b");
do until (ym &amp;gt; end_date);
  output;
  ym = intnx("month",ym,1,"b");
end;
keep id ym;
run;

proc freq data=ym order=formatted noprint;
tables ym / out=want (drop=percent);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 30 Jun 2022 09:11:10 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2022-06-30T09:11:10Z</dc:date>
    <item>
      <title>Create a count of people active across months based on start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821076#M40986</link>
      <description>&lt;P&gt;Folks,&lt;/P&gt;&lt;P&gt;I have a dataset with 1.7million rows of data which looks as follows;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Start_Date&lt;/TD&gt;&lt;TD&gt;End_Date&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2016&lt;/TD&gt;&lt;TD&gt;31/12/2016&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;30/06/2017&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2017&lt;/TD&gt;&lt;TD&gt;31/12/2017&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2018&lt;/TD&gt;&lt;TD&gt;30/06/2018&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2018&lt;/TD&gt;&lt;TD&gt;31/12/2018&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;30/06/2019&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2019&lt;/TD&gt;&lt;TD&gt;31/12/2019&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2020&lt;/TD&gt;&lt;TD&gt;30/06/2020&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;31/12/2020&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2021&lt;/TD&gt;&lt;TD&gt;30/06/2021&lt;/TD&gt;&lt;TD&gt;00241J&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2016&lt;/TD&gt;&lt;TD&gt;31/08/2016&lt;/TD&gt;&lt;TD&gt;0038R&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2016&lt;/TD&gt;&lt;TD&gt;31/08/2016&lt;/TD&gt;&lt;TD&gt;089Q&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/11/2016&lt;/TD&gt;&lt;TD&gt;31/12/2016&lt;/TD&gt;&lt;TD&gt;089Q&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/05/2016&lt;/TD&gt;&lt;TD&gt;31/08/2016&lt;/TD&gt;&lt;TD&gt;0099I&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/09/2016&lt;/TD&gt;&lt;TD&gt;31/12/2016&lt;/TD&gt;&lt;TD&gt;0099I&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2017&lt;/TD&gt;&lt;TD&gt;30/04/2017&lt;/TD&gt;&lt;TD&gt;0099I&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/05/2017&lt;/TD&gt;&lt;TD&gt;31/08/2017&lt;/TD&gt;&lt;TD&gt;0099I&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My ultimate goal is to be able to derive counts by for each year month of the number of unique IDs active in a month. Therefore, I think I need to create new variables (columns or rows) to identify what months an ID was active. So for example row 1 has dates from 1/7/16 to the 31/12/16, so I need to create something to say this ID was active in July, August, September all the way to December 16 but it also has to be done in groups.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone have any advice of the best way to do this?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Would it be easier to try and use the dates to output IDs into monthly datasets?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I advice is welcome.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All the best,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sean&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jun 2022 08:06:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821076#M40986</guid>
      <dc:creator>Sean_OConnor</dc:creator>
      <dc:date>2022-06-30T08:06:27Z</dc:date>
    </item>
    <item>
      <title>Re: Create a count of people active across months based on start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821086#M40987</link>
      <description>&lt;P&gt;First, expand the observations over months, then use PROC FREQ:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ym;
set have;
format ym yymmd7.;
ym = intnx("month",start_date,0,"b");
do until (ym &amp;gt; end_date);
  output;
  ym = intnx("month",ym,1,"b");
end;
keep id ym;
run;

proc freq data=ym order=formatted noprint;
tables ym / out=want (drop=percent);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Jun 2022 09:11:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821086#M40987</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-06-30T09:11:10Z</dc:date>
    </item>
    <item>
      <title>Re: Create a count of people active across months based on start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821101#M40988</link>
      <description>&lt;P&gt;The problem could be solved by using a hash object, too:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
   set have end=jobDone;
   length date count 8;
   format date yymmd7.;

   if _n_=1 then
      do;
         declare hash h(ordered: 'yes');
         h.defineKey('date');
         h.defineData('date', 'count');
         h.defineDone();
      end;
	  
   end_date=intnx('month', end_date, 0, 'b');
   date=start_date;

   do until(date &amp;gt; end_date);

      if h.find() ^=0 then
         do;
            count=1;
            h.add();
         end;
      else
         do;
            count=count + 1;
            h.replace();
         end;
      date=intnx('month', date, 1, 'b');
   end;

   if jobDone then
      do;
         h.output(dataset: 'work.want');
      end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Jun 2022 11:10:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821101#M40988</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2022-06-30T11:10:56Z</dc:date>
    </item>
    <item>
      <title>Re: Create a count of people active across months based on start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821111#M40989</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards expandtabs;
input Start_Date :ddmmyy12. End_Date :ddmmyy12. ID $;
format Start_Date End_Date ddmmyy10.;
cards;
01/07/2016 31/12/2016 00241J
01/01/2017 30/06/2017 00241J
01/07/2017 31/12/2017 00241J
01/01/2018 30/06/2018 00241J
01/07/2018 31/12/2018 00241J
01/01/2019 30/06/2019 00241J
01/07/2019 31/12/2019 00241J
01/01/2020 30/06/2020 00241J
01/07/2020 31/12/2020 00241J
01/01/2021 30/06/2021 00241J
01/07/2016 31/08/2016 0038R
01/07/2016 31/08/2016 089Q
01/11/2016 31/12/2016 089Q
01/05/2016 31/08/2016 0099I
01/09/2016 31/12/2016 0099I
01/01/2017 30/04/2017 0099I
01/05/2017 31/08/2017 0099I
;

data temp;
 set have;
 do date=intnx('month',Start_Date,0) to End_Date;
  month=month(date);
  if lag_month ne month then output;
  lag_month=month;
 end;
 keep id date;
 format date ddmmyy10.;
run;

proc sql;
create table want as
select date,count(distinct id) as count
 from temp
  group by date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Jun 2022 12:21:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821111#M40989</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-06-30T12:21:58Z</dc:date>
    </item>
    <item>
      <title>Re: Create a count of people active across months based on start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821146#M40990</link>
      <description>&lt;P&gt;What do you mean it has to be done in groups?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jun 2022 14:28:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Create-a-count-of-people-active-across-months-based-on-start-and/m-p/821146#M40990</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2022-06-30T14:28:24Z</dc:date>
    </item>
  </channel>
</rss>

