<?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: Calculating Average Number of Days in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448228#M283423</link>
    <description>&lt;P&gt;Just a friendly note that this is not 'SAS Technical Support', this is a user community forum where almost everyone is a volunteer. There are several SAS employee's and you can tell who they are by their avatar.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/3770"&gt;@jjadall1&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Good morning SAS Technical Support,&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;SAS Technical Support can be contacted by opening a ticket through their online system or emailing support@sas.com&lt;/P&gt;</description>
    <pubDate>Fri, 23 Mar 2018 16:34:14 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2018-03-23T16:34:14Z</dc:date>
    <item>
      <title>Calculating Average Number of Days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448220#M283422</link>
      <description>&lt;P&gt;Good morning SAS Technical Support,&lt;/P&gt;
&lt;DIV&gt;I have two datasets, data1 (original example data) and data2 (what I want it to look like).&amp;nbsp; The variable I am looking to calculate is average delay.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;data 1&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;TABLE width="441"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;CIK&lt;/TD&gt;
&lt;TD width="64"&gt;fyr&lt;/TD&gt;
&lt;TD width="64"&gt;rpb&lt;/TD&gt;
&lt;TD width="75"&gt;rpe&lt;/TD&gt;
&lt;TD width="106"&gt;disclosure_date&lt;/TD&gt;
&lt;TD width="68"&gt;delay&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;12344&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;1/1/2009&lt;/TD&gt;
&lt;TD&gt;12/31/2009&lt;/TD&gt;
&lt;TD&gt;3/15/2011&lt;/TD&gt;
&lt;TD&gt;439&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;12345&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;1/1/2010&lt;/TD&gt;
&lt;TD&gt;6/30/2011&lt;/TD&gt;
&lt;TD&gt;9/17/2011&lt;/TD&gt;
&lt;TD&gt;79&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;21367&lt;/TD&gt;
&lt;TD&gt;9&lt;/TD&gt;
&lt;TD&gt;8/1/2011&lt;/TD&gt;
&lt;TD&gt;9/30/2013&lt;/TD&gt;
&lt;TD&gt;12/19/2013&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;31269&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;7/1/2013&lt;/TD&gt;
&lt;TD&gt;8/31/2015&lt;/TD&gt;
&lt;TD&gt;1/13/2016&lt;/TD&gt;
&lt;TD&gt;135&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;43375&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2/1/2014&lt;/TD&gt;
&lt;TD&gt;7/31/2015&lt;/TD&gt;
&lt;TD&gt;12/11/2015&lt;/TD&gt;
&lt;TD&gt;133&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;data 2&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;TABLE width="531"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;CIK&lt;/TD&gt;
&lt;TD width="64"&gt;fyr&lt;/TD&gt;
&lt;TD width="64"&gt;rpb&lt;/TD&gt;
&lt;TD width="75"&gt;rpe&lt;/TD&gt;
&lt;TD width="106"&gt;disclosure_date&lt;/TD&gt;
&lt;TD width="64"&gt;delay&lt;/TD&gt;
&lt;TD width="94"&gt;average delay&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;12344&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;1/1/2009&lt;/TD&gt;
&lt;TD&gt;12/31/2009&lt;/TD&gt;
&lt;TD&gt;3/15/2011&lt;/TD&gt;
&lt;TD&gt;439&lt;/TD&gt;
&lt;TD&gt;439.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;12345&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;1/1/2010&lt;/TD&gt;
&lt;TD&gt;6/30/2011&lt;/TD&gt;
&lt;TD&gt;9/17/2011&lt;/TD&gt;
&lt;TD&gt;79&lt;/TD&gt;
&lt;TD&gt;261.50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;21367&lt;/TD&gt;
&lt;TD&gt;9&lt;/TD&gt;
&lt;TD&gt;8/1/2011&lt;/TD&gt;
&lt;TD&gt;9/30/2013&lt;/TD&gt;
&lt;TD&gt;12/19/2013&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;445.33&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;31269&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;7/1/2013&lt;/TD&gt;
&lt;TD&gt;8/31/2015&lt;/TD&gt;
&lt;TD&gt;1/13/2016&lt;/TD&gt;
&lt;TD&gt;135&lt;/TD&gt;
&lt;TD&gt;432.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;43375&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2/1/2014&lt;/TD&gt;
&lt;TD&gt;7/31/2015&lt;/TD&gt;
&lt;TD&gt;12/11/2015&lt;/TD&gt;
&lt;TD&gt;133&lt;/TD&gt;
&lt;TD&gt;223.50&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;I need to calculate the average number of delays a restatement is delayed from fiscal years.&amp;nbsp; The fiscal month-end of a company is the fyr variable.&amp;nbsp; For example, observation 1 has an fyr of 12.&amp;nbsp; That means 12/31 is the fiscal year-end.&amp;nbsp; Here's how the delay works that I'm looking for:&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;Observation 1&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;The restatement period is from 1/1/2009 (rpb) to 12/31/2009 (rpe).&amp;nbsp; This restatement is all only in one period since 12/31/2009 is the fiscal year-end.&amp;nbsp; Therefore, the average delay is the delay variable (number of days after 12/31/2009 to 3/15/2011 = 439).&amp;nbsp; 12/31/2009 is NOT included in the calculation.&amp;nbsp; 3/15/2011 is the disclosure date.&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;&amp;nbsp;&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;Observation 2&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;The restatement period is from 1/1/2010 (rpb) to 6/30/2011 (rpe).&amp;nbsp; This restatement is in two periods (1/1/2010 through 6/30/2010 and 7/1/2010 through 6/30/2011).&amp;nbsp; Therefore, the average delay is the average of the number of days after 6/30/2010 through 9/17/2011 (444 days) and the number of days after 6/30/2011 through 9/17/2011 (79), which is 261.50.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;The other observations work the same way.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Delay is calculated as follows:&lt;/DIV&gt;
&lt;DIV&gt;Delay = (Datdif (rpe, disclosure_date, 'act/act'));&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;That delay calculation is only from the end of the restatement periods to the disclosure date.&amp;nbsp; I need the average of delay for all periods.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Counting number of periods based on fyr is done with the following code:&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Periods=(intck(catt('qtr.',&lt;/SPAN&gt;&lt;WBR /&gt;&lt;SPAN&gt;mod(&lt;/SPAN&gt;&lt;SPAN class="il"&gt;fyr&lt;/SPAN&gt;&lt;SPAN&gt;,3)+1),rpb,rpe)+1)/4;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;That may help you with the fyr idea.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Please let me know if you have any questions.&amp;nbsp; Thank you so much for your help!&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;God bless, best regards, and have a fabulous weekend,&lt;/DIV&gt;
&lt;DIV&gt;Jadallah&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 23 Mar 2018 16:21:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448220#M283422</guid>
      <dc:creator>jjadall1</dc:creator>
      <dc:date>2018-03-23T16:21:58Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating Average Number of Days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448228#M283423</link>
      <description>&lt;P&gt;Just a friendly note that this is not 'SAS Technical Support', this is a user community forum where almost everyone is a volunteer. There are several SAS employee's and you can tell who they are by their avatar.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/3770"&gt;@jjadall1&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Good morning SAS Technical Support,&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;SAS Technical Support can be contacted by opening a ticket through their online system or emailing support@sas.com&lt;/P&gt;</description>
      <pubDate>Fri, 23 Mar 2018 16:34:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448228#M283423</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-03-23T16:34:14Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating Average Number of Days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448244#M283424</link>
      <description>&lt;P&gt;This loops over a series of consecutive fiscal year end dates, starting with the RPB fiscal year end date, and ending with the RPE fiscal year end date.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input CIK fyr (rpb rpe disclosure_date) (:mmddyy10.) delay ;
  format rpb rpe disclosure_date date9.;
datalines;
12344 12 1/1/2009 12/31/2009 3/15/2011 439 
12345 6 1/1/2010 6/30/2011 9/17/2011 79 
21367 9 8/1/2011 9/30/2013 12/19/2013 80 
31269 7 7/1/2013 8/31/2015 1/13/2016 135 
43375 1 2/1/2014 7/31/2015 12/11/2015 133 
run;

data want (drop=fyr_:);
  set have;
  fyr_enddate_final=intnx(cats('year.',mod(fyr,12)+1),rpe,0,'END');
  fyr_enddate=intnx(cats('year.',mod(fyr,12)+1),rpb,0,'END');

  do N_periods_disclosed=1 by 1 until (fyr_enddate &amp;gt; fyr_enddate_final);
    average_days=sum(average_days,disclosure_date-fyr_enddate);
    fyr_enddate=intnx('month',fyr_enddate,12,'END');
  end;
  average_delay=average_days/N_periods_disclosed;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The program matches your posted average delays for the first 3 records, but not the last 2.&amp;nbsp;&amp;nbsp; Are you sure you posted the&amp;nbsp;correct results for #4 and #5?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also DATDIF with 'ACT/ACT' is just a count of days.&amp;nbsp; And since sas date values are numbers representing number of days after or before 01jan1960, a simple subtraction works as well.&amp;nbsp; But you could replace&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; average_days=sum(average_days,disclosure_date-fyr_enddate);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;with&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; average_days=sum(average_days,DATDIF(fyr_enddate,disclosure_date,"ACT/ACT"));&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;if you prefer.&lt;/P&gt;</description>
      <pubDate>Fri, 23 Mar 2018 17:12:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448244#M283424</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-03-23T17:12:07Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating Average Number of Days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448283#M283425</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;Thank you for your help!&amp;nbsp; You are right - the first 3 match.&amp;nbsp; The issue (if I'm not mistaken) with the last two is that the end of the restatement period (rpe) does NOT match to the fyr.&amp;nbsp; If that's the case, the delay for that last period is the delay variable that I already have calculated.&amp;nbsp; How would I incorporate that?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;God bless, best regards, and thanks again,&lt;/P&gt;
&lt;P&gt;Jadallah&lt;/P&gt;</description>
      <pubDate>Fri, 23 Mar 2018 18:45:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448283#M283425</guid>
      <dc:creator>jjadall1</dc:creator>
      <dc:date>2018-03-23T18:45:14Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating Average Number of Days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448328#M283426</link>
      <description>&lt;P&gt;So when&amp;nbsp;end-date of the last fiscal year would be AFTER disclosure date, you want to use the DELAY value rather than the calculated difference (which would be negative) between fiscal year end and disclosure.&amp;nbsp; In that case you can add maximum of delay vs calculated difference.&amp;nbsp;The calculated difference will be the maximum for all non-final years, and also for final years in which the period end aligns with a fiscal year end date.&amp;nbsp; For other final years, delay is the maximum.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&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 CIK fyr (rpb rpe disclosure_date) (:mmddyy10.) delay ;
  format rpb rpe disclosure_date date9.;
datalines;
12344 12 1/1/2009 12/31/2009  3/15/2011 439
12345  6 1/1/2010  6/30/2011  9/17/2011  79
21367  9 8/1/2011  9/30/2013 12/19/2013  80
31269  7 7/1/2013  8/31/2015  1/13/2016 135
43375  1 2/1/2014  7/31/2015 12/11/2015 133
run;

data want (drop=fyr_:);
  set have;
  fyr_enddate_final=intnx(cats('year.',mod(fyr,12)+1),rpe,0,'END');
  fyr_enddate=intnx(cats('year.',mod(fyr,12)+1),rpb,0,'END');

  do N_periods_disclosed=1 by 1 until (fyr_enddate &amp;gt; fyr_enddate_final);
    fyr_delay=max(delay,disclosure_date-fyr_enddate);
    fyr_total_days=sum(fyr_total_days,fyr_delay);
    fyr_enddate=intnx('month',fyr_enddate,12,'END');
  end;
  average_delay=fyr_total_days/N_periods_disclosed;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 23 Mar 2018 20:53:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448328#M283426</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-03-23T20:53:22Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating Average Number of Days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448384#M283427</link>
      <description>&lt;P&gt;Thank you so very much!!!&amp;nbsp; God bless you and your family!!!!!&lt;/P&gt;
&lt;P&gt;Jadallah&lt;/P&gt;</description>
      <pubDate>Sat, 24 Mar 2018 03:23:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-Average-Number-of-Days/m-p/448384#M283427</guid>
      <dc:creator>jjadall1</dc:creator>
      <dc:date>2018-03-24T03:23:02Z</dc:date>
    </item>
  </channel>
</rss>

