<?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: How to calculate 3 month rolling average and weight average % in SAS in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328934#M73516</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13711"&gt;@art297&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think you intend the array values&amp;nbsp;to be automatically retained, yes?&amp;nbsp; Are you missing a "_TEMPORARY_" attribute?&lt;/P&gt;</description>
    <pubDate>Tue, 31 Jan 2017 23:58:52 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2017-01-31T23:58:52Z</dc:date>
    <item>
      <title>How to calculate 3 month rolling average and weight average % in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328863#M73485</link>
      <description>&lt;P&gt;I have a dataset like below and I am trying to calculate the rolling 3 month average for both of the denominator and numerator, and lastly try to get the weight average % (Rolling 3M average of&amp;nbsp;numerator / rolling 3M average of denominator). Is there any way to do it? Any suggestions would be gladly appreciated.&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;DATE&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;DENOMINATOR&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;NUMERATOR&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;11/30/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;927&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;62&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;12/31/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;968&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;27&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;619&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;36&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;433&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;24&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;642&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;60&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;286&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;79&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;5/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;962&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;81&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;6/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;194&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;55&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;7/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;892&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;54&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;8/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;464&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;74&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;9/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;600&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;397&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;42&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;11/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;896&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;35&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;12/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;742&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;58&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The end result would be like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;DATE&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;DENOMINATOR&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;NUMERATOR&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Rolling 3M Average of Denominator&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Rolling 3M average of Numerator&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Rolling 3M average of Numerator/ Rolling 3M Average of Denominator&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;11/30/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;927&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;62&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;12/31/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;968&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;27&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;619&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;36&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;838&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;42&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.050&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;433&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;24&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;673&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;29&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.043&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;642&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;60&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;565&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;40&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.071&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;286&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;79&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;454&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;54&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.120&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;5/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;962&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;81&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;630&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;73&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.116&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;6/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;194&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;55&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;481&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;72&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.149&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;7/29/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;892&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;54&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;683&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;63&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.093&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;8/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;464&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;74&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;517&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;61&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.118&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;9/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;600&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;652&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;44&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.067&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;10/31/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;397&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;42&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;487&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;40&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.082&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;11/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;896&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;35&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;631&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;27&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.043&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;12/30/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;742&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;58&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;678&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;45&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0.066&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 31 Jan 2017 20:36:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328863#M73485</guid>
      <dc:creator>LL5</dc:creator>
      <dc:date>2017-01-31T20:36:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3 month rolling average and weight average % in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328873#M73491</link>
      <description>&lt;P&gt;Followiing is untested code because what every you pasted for data is not amemable to writing code against. Better is to paste data in the form of a data step. If you have a SAS data set instructions here will help you create data step code from the data: &lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You may want to subset your data to only variables of interest and enough records to exercise the rules.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This should work though&lt;/P&gt;
&lt;PRE&gt;data want;
   set have;
   r3mMdenom = mean(denominator,lag(denominator),lag2(denominator);
   r3mMnum   = mean(numerator,lag(numerator),lag2(numerator);
   /* since you don't want the partials*/
   if _n_&amp;lt;3 then call missing(r3mMdenom, r3mMnum);
   else r3mpercent= r3mMnum/r3mMdenom;
run;&lt;/PRE&gt;</description>
      <pubDate>Tue, 31 Jan 2017 20:57:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328873#M73491</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-01-31T20:57:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3 month rolling average and weight average % in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328876#M73494</link>
      <description>&lt;P&gt;Another way to approach the problem is to use a FIFO stack. e.g.:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data want (drop=_:);
  set have;
  array n[0:2] _n0-_n2;
  array d[0:2] _d0-_d2;
  retain _n0-_n2 _d0-_d2;
  _index=mod(_n_,3);
  n[_index]=NUMERATOR;
  d[_index]=DENOMINATOR;
  if _n_ ge 3 then do;
    Rolling_3M_Average_Denominator=sum(of d(*))/3;
    Rolling_3M_average_Numerator=sum(of n(*))/3;
    Numerator_div_Denominator=
     Rolling_3M_average_Numerator/Rolling_3M_Average_Denominator;
  end;
run;
&lt;/PRE&gt;
&lt;P&gt;HTH,&lt;/P&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 Jan 2017 21:07:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328876#M73494</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-01-31T21:07:58Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3 month rolling average and weight average % in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328887#M73500</link>
      <description>&lt;P&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: navy; font-family: &amp;quot;Courier New&amp;quot;;"&gt;This seems work. Thanks a lot! &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: navy; font-family: &amp;quot;Courier New&amp;quot;;"&gt;DATA&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; HAVE;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;INPUT&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DATE$ &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;1&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;10&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DENOMINATOR &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;11&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;14&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; NUMERATOR &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;15&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;17&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;DATALINES&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;11/30/2015 927&amp;nbsp; 62&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;12/31/2015 968&amp;nbsp; 27&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;1/29/2016&amp;nbsp; 619&amp;nbsp; 36&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;2/29/2016&amp;nbsp; 433&amp;nbsp; 24&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;3/31/2016&amp;nbsp; 642&amp;nbsp; 60&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;4/29/2016&amp;nbsp; 286&amp;nbsp; 79&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;5/31/2016&amp;nbsp; 962&amp;nbsp; 81&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;6/30/2016&amp;nbsp; 194&amp;nbsp; 55&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;7/29/2016&amp;nbsp; 892&amp;nbsp; 54&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;8/31/2016&amp;nbsp; 464&amp;nbsp; 74&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;9/30/2016&amp;nbsp; 600&amp;nbsp; 4&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;10/31/2016 397&amp;nbsp; 42&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;11/30/2016 896&amp;nbsp; 35&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;12/30/2016 742&amp;nbsp; 58&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: navy; font-family: &amp;quot;Courier New&amp;quot;;"&gt;RUN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: navy; font-family: &amp;quot;Courier New&amp;quot;;"&gt;data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; want;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; have;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp; r3mMdenom = mean(denominator,lag(denominator),lag2(denominator));&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp; r3mMnum&amp;nbsp;&amp;nbsp; = mean(numerator,lag(numerator),lag2(numerator));&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: green; font-family: &amp;quot;Courier New&amp;quot;;"&gt;/* since you don't want the partials*/&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; _n_&amp;lt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: teal; font-family: &amp;quot;Courier New&amp;quot;;"&gt;3&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;call&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; missing(r3mMdenom, r3mMnum);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;else&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt; r3mpercent= r3mMnum/r3mMdenom;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;&lt;SPAN style="background: white; color: navy; font-family: &amp;quot;Courier New&amp;quot;;"&gt;run&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 Jan 2017 21:29:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328887#M73500</guid>
      <dc:creator>LL5</dc:creator>
      <dc:date>2017-01-31T21:29:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3 month rolling average and weight average % in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328934#M73516</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13711"&gt;@art297&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think you intend the array values&amp;nbsp;to be automatically retained, yes?&amp;nbsp; Are you missing a "_TEMPORARY_" attribute?&lt;/P&gt;</description>
      <pubDate>Tue, 31 Jan 2017 23:58:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328934#M73516</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2017-01-31T23:58:52Z</dc:date>
    </item>
    <item>
      <title>Re: How to calculate 3 month rolling average and weight average % in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328943#M73520</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31461"&gt;@mkeintz&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;While I had retained the values, you're absolutely correct. It would have been even simpler to define them as being _temporary_. Similarly, using the mean function, would even further simplify the code. Here is a revised version:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data want (drop=_:);
  set have;
  array n[0:2] _temporary_;
  array d[0:2] _temporary_;
  _index=mod(_n_,3);
  n[_index]=NUMERATOR;
  d[_index]=DENOMINATOR;
  if _n_ ge 3 then do;
    Rolling_3M_Average_Denominator=mean(of d(*));
    Rolling_3M_average_Numerator=mean(of n(*));
    Numerator_div_Denominator=
     Rolling_3M_average_Numerator/Rolling_3M_Average_Denominator;
  end;
run;
&lt;/PRE&gt;
&lt;P&gt;Thanks for pointing that out,&lt;/P&gt;
&lt;P&gt;Art&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Feb 2017 00:39:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-calculate-3-month-rolling-average-and-weight-average-in/m-p/328943#M73520</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-02-01T00:39:48Z</dc:date>
    </item>
  </channel>
</rss>

