<?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: Fill in a date table from a specific date in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584677#M166567</link>
    <description>&lt;P&gt;Thanks, everyone! (I don't have ETS btw).&lt;/P&gt;</description>
    <pubDate>Wed, 28 Aug 2019 17:35:41 GMT</pubDate>
    <dc:creator>crawfe</dc:creator>
    <dc:date>2019-08-28T17:35:41Z</dc:date>
    <item>
      <title>Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584534#M166511</link>
      <description>&lt;P&gt;Hi. I have a data table where the data for different Names only shows entry rows for dates (MY)&lt;/P&gt;&lt;P&gt;which had a Value.&lt;/P&gt;&lt;P&gt;I would like to get to finding average monthly Values SO I would like a table with a row for each month.&lt;/P&gt;&lt;P&gt;I would like to fill out the table for the Names data such that all Names rows start on the same date&lt;/P&gt;&lt;P&gt;and fills in value=0 for the added rows.&lt;/P&gt;&lt;P&gt;For example: I would like to say start all the date ranges at 11/2017 and&lt;/P&gt;&lt;P&gt;fill in up to the Previous full month (07/2019 since we are in August; Previous will change each month).&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HAVE:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WANT:&lt;/P&gt;&lt;P&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUE&lt;/P&gt;&lt;P&gt;Name1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/2017 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 11/2017 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;FONT color="#0000FF"&gt; 0&lt;/FONT&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Name1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 07/2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;Name1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 02/2019&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 01/2019 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color="#0000FF"&gt;0&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Name2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01/2018 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 02/2019&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#0000FF"&gt;0&lt;/FONT&gt;&amp;nbsp; etc.&lt;/P&gt;&lt;P&gt;Name2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11/2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ......Name1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 07/2019&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#0000FF"&gt;0&amp;nbsp; end of the Name1 series&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Name2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 07/2019&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11/2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#0000FF"&gt;0&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Name3.....etc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#0000FF"&gt;0&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01/2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc.&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 12:37:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584534#M166511</guid>
      <dc:creator>crawfe</dc:creator>
      <dc:date>2019-08-28T12:37:36Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584538#M166512</link>
      <description>&lt;P&gt;Do you have a SAS/ETS license?&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 12:47:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584538#M166512</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-08-28T12:47:40Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584548#M166516</link>
      <description>&lt;P&gt;There are more slick ways to do this, but here is one&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input name $ date :anydtdte7. value;
format date mmyys7.;
datalines; 
NAME1 12/2017 2
NAME1 07/2018 1
NAME1 02/2019 3
NAME2 01/2018 3
NAME2 11/2018 4
NAME2 07/2019 1
;

proc summary data=have nway;
    class name date;
    var value;
    format date mmyys7.;
    output out=agg(drop=_TYPE_ _FREQ_) sum=;
run;

data want(drop=rc);
    
    declare hash h(dataset:'agg');
    h.definekey('name', 'date');
    h.definedata('value');
    h.definedone();

    set have;
    by name;

    if first.name then do;
        date='01oct2017'd;
        do until (date=intnx('month', today(), -1, 'b'));
            value=0;
            rc=h.find();
            output;
            date=intnx('month', date, 1, 'b');
        end;
    end;

    format date mmyys7.;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 13:20:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584548#M166516</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-08-28T13:20:29Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584554#M166520</link>
      <description>&lt;P&gt;Using straight "old school" data step means (and a sort):&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input name $ date :anydtdte7. value;
format date mmyys7.;
datalines; 
NAME1 12/2017 2
NAME1 07/2018 1
NAME1 02/2019 3
NAME2 01/2018 3
NAME2 11/2018 4
NAME2 07/2019 1
;

%let start='01nov2017'd;
%let end='01jul2019'd;

data want;
set have;
by name;
retain olddate;
if first.name
then do;
  output; /* keep current observation */
  olddate = date;
  value = 0;
  date = &amp;amp;start;
  do while (date &amp;lt; olddate);
    output;
    date = intnx('month',date,1);
  end;
end;
else do;
  output;
  intdate = date;
  value = 0;
  date = intnx('month',olddate,1);
  do while (date &amp;lt; intdate);
    output;
    date = intnx('month',date,1);
  end;
  olddate = intdate;
end;
if last.name
then do;
  value = 0;
  date = intnx('month',olddate,1);
  do while (date le &amp;amp;end);
    output;
    date = intnx('month',date,1);
  end;
end;
drop olddate intdate;
run;

proc sort data=want;
by name date;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 13:39:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584554#M166520</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-08-28T13:39:52Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584573#M166525</link>
      <description>&lt;P&gt;If you have SAS/ETS license, then this is a job for PROC TIMESERIES&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input name $ date :anydtdte7. value;
format date mmyys7.;
datalines; 
NAME1 12/2017 2
NAME1 07/2018 1
NAME1 02/2019 3
NAME2 01/2018 3
NAME2 11/2018 4
NAME2 07/2019 1
;

proc timeseries data=have out=want;
   by name;
   id date interval=month
           accumulate=total
           setmiss=0
           start='01nov2017'd
           end  ='01jul2019'd;
   var value;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 14:18:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584573#M166525</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-08-28T14:18:05Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584577#M166527</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;


data have;
input name $ date :anydtdte7. value;
format date mmyys7.;
datalines; 
NAME1 12/2017 2
NAME1 07/2018 1
NAME1 02/2019 3
NAME2 01/2018 3
NAME2 11/2018 4
NAME2 07/2019 1
;

data want;
if _n_=1 then do;
  declare hash h();
  h.definekey('date');
  h.definedata('value');
  h.definedone();
  max=intnx('mon',today(),-1,'e');
end;
 do until(last.name);
  set have;
  by name;
  rc=h.add();
 end;
retain max min '01nov2017'd;
 date=min;
 do while(date&amp;lt;max);
  if h.find() ne 0 then value=0;
  output;
  date=intnx('mon',date,1);
 end;
 h.clear();
 drop min max rc;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 14:22:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584577#M166527</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-28T14:22:17Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584676#M166566</link>
      <description>&lt;P&gt;Draycut, thanks. It worked just right.&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 17:33:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584676#M166566</guid>
      <dc:creator>crawfe</dc:creator>
      <dc:date>2019-08-28T17:33:56Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584677#M166567</link>
      <description>&lt;P&gt;Thanks, everyone! (I don't have ETS btw).&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 17:35:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584677#M166567</guid>
      <dc:creator>crawfe</dc:creator>
      <dc:date>2019-08-28T17:35:41Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584708#M166574</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/268817"&gt;@crawfe&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;If your goal is "&lt;SPAN&gt;to get to finding average monthly Values", I see no sense in this exercise of expanding the data set and filling in with zeroes. This is because the date ranges you already have are sufficient for computing your averages directly:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                               
  input name :$5. date :anydtdte7. value ;
  format date yymms7. ;                   
  cards ;                                 
NAME1 12/2017 1                           
NAME1 07/2018 2                           
NAME1 02/2019 3                           
NAME2 01/2018 4                           
NAME2 11/2018 5                           
NAME2 07/2019 6                           
;                                         
run ;                                     
                                          
data mean (keep = name sum N mean) ;      
  do until (last.name) ;                  
    set have ;                            
    by name ;                             
    if first.name then _d = date ;        
    sum = sum (sum, value) ;              
  end ;                                   
  N = 1 + intck ("mon", _d, date) ;       
  Mean = divide (sum, N) ;                
run ;                                     
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Doing so will also save you computer time, disk space, and the pain of figuring out how to create the "fill in" data set.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, if you still want to create it, it can be done on the fly by looking forward to the next date, for examplei:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data fill (drop = _:) ;                            
  set have ;                                       
  by name ;                                        
  if last.name then output ;                       
  else do ;                                        
    p = _n_ + 1 ;                                  
    set have (keep=date rename=date=_d) point = p ;
    do while (date &amp;lt; _d) ;                         
      output ;                                     
      value = 0 ;                                  
      date = intnx ("mon", date, 1) ;              
    end ;                                          
  end ;                                            
run ;                                              
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;For those averse to explicit POINT= look-ahead logic, perhaps even simpler would be:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data v / view = v ;                           
  set have (keep = name date rename=date=_d) ;
  by name ;                                   
  if not first.name ;                         
run ;                                         
                                              
data fill (drop = _:) ;                       
  merge have v ;                              
  by name ;                                   
  if last.name then output ;                  
  else do while (date &amp;lt; _d) ;                 
    output ;                                  
    value = 0 ;                               
    date = intnx ("mon", date, 1) ;           
  end ;                                       
run ;                                         
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Kind regards&lt;/P&gt;
&lt;P&gt;Paul D.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 18:52:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584708#M166574</guid>
      <dc:creator>hashman</dc:creator>
      <dc:date>2019-08-28T18:52:45Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584791#M166634</link>
      <description>&lt;P&gt;Thanks for a different approach!&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 21:09:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584791#M166634</guid>
      <dc:creator>crawfe</dc:creator>
      <dc:date>2019-08-28T21:09:08Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in a date table from a specific date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584907#M166706</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input name $ _date $ value;
date=input(cats('01/',_date),ddmmyy10.);
drop _:;
format date mmyys7.;
datalines; 
NAME1 12/2017 2
NAME1 07/2018 1
NAME1 02/2019 3
NAME2 01/2018 3
NAME2 11/2018 4
NAME2 07/2019 1
;

data date;
 do date='01nov2017'd to '01jul2019'd;
   if month(date) ne month then output;
   month=month(date);
 end;
drop month;
format date mmyys7.;
run;

proc sql;
create table want as
select 	a.*,coalesce(b.value,0) as value
 from (
 select * from
 (select distinct name from have),(select date from date)
 ) as a left join have as b
 on a.name=b.name and a.date=b.date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 29 Aug 2019 12:34:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-a-date-table-from-a-specific-date/m-p/584907#M166706</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-08-29T12:34:14Z</dc:date>
    </item>
  </channel>
</rss>

