<?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: Moving sum by 12 months * moving weight by 3months in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577690#M163715</link>
    <description>&lt;P&gt;Moving sum by 12 months is easily calculated using PROC EXPAND. If you don't have PROC EXPAND in your SAS license, you can find workaround here by searching these forums.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As far as your weights are concerned&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data weights;
    set have;
    weight1 = floor((month-1)/3)+1;
    weight2 = lag(weight1);
    weight3 = lag2(weight1);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 30 Jul 2019 12:13:19 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2019-07-30T12:13:19Z</dc:date>
    <item>
      <title>Moving sum by 12 months * moving weight by 3months</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577649#M163704</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;Looking for a moving weight for a moving sum.&lt;/P&gt;&lt;P&gt;I know how to calculate a moving 12 month sum. but dont's know to give it a moving weight.&lt;/P&gt;&lt;P&gt;Here the example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Period&lt;/TD&gt;&lt;TD&gt;Sales&lt;/TD&gt;&lt;TD&gt;Month&lt;/TD&gt;&lt;TD&gt;Moving SUM (12 Month)&lt;/TD&gt;&lt;TD&gt;Wanted weight for 201812&lt;/TD&gt;&lt;TD&gt;Wanted weight for 201901&lt;/TD&gt;&lt;TD&gt;Wanted weight for 2018902&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201801&lt;/TD&gt;&lt;TD&gt;684,94&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201802&lt;/TD&gt;&lt;TD&gt;515,42&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201803&lt;/TD&gt;&lt;TD&gt;894,1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201804&lt;/TD&gt;&lt;TD&gt;7,43&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201805&lt;/TD&gt;&lt;TD&gt;129,75&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201806&lt;/TD&gt;&lt;TD&gt;829,85&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201807&lt;/TD&gt;&lt;TD&gt;168,86&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201808&lt;/TD&gt;&lt;TD&gt;55,17&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201809&lt;/TD&gt;&lt;TD&gt;61,55&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201810&lt;/TD&gt;&lt;TD&gt;867,91&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201811&lt;/TD&gt;&lt;TD&gt;669,72&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201812&lt;/TD&gt;&lt;TD&gt;258,08&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;5142,78&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201901&lt;/TD&gt;&lt;TD&gt;454,17&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4912,01&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201902&lt;/TD&gt;&lt;TD&gt;861,42&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;5258,01&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can somebody help me?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jul 2019 09:47:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577649#M163704</guid>
      <dc:creator>Dinslax</dc:creator>
      <dc:date>2019-07-30T09:47:07Z</dc:date>
    </item>
    <item>
      <title>Re: Moving sum by 12 months * moving weight by 3months</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577651#M163705</link>
      <description>&lt;P&gt;This is the code for the moving SUM:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Create monthly sales data from January 2008 to December 2010 */&lt;BR /&gt;data test;&lt;BR /&gt;do mo_period = '01jan2008'd to '31dec2010'd;&lt;BR /&gt;sales = round(ranuni(1234567) * 1000, .01);&lt;BR /&gt;mo_period = intnx('month', mo_period, 0, 'END');&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;format mo_period monyy7. sales comma10.2;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Specify the number of periods in the rolling sum and average */&lt;BR /&gt;%let roll_num = 12;&lt;/P&gt;&lt;P&gt;data new;&lt;BR /&gt;set test;&lt;BR /&gt;/* Create array with specific number of elements. */&lt;BR /&gt;/* Passing _temporary_ arrays as arguments to functions is not supported */&lt;BR /&gt;/* until SAS 9.2. */&lt;BR /&gt;/* If the array is a _TEMPORARY_ array, the elements are automatically retained */&lt;BR /&gt;array summed[&amp;amp;roll_num] _temporary_;&lt;/P&gt;&lt;P&gt;/* Alternatively, a non-temporary array can be used but it must be retained: */&lt;BR /&gt;/* array summed[&amp;amp;roll_num];*/&lt;BR /&gt;/* retain summed;*/&lt;/P&gt;&lt;P&gt;/* E represents the element of the array to assign a sales value. */&lt;BR /&gt;/* Increment it by one unless it is equal to &amp;amp;roll_num, at which point */&lt;BR /&gt;/* start over and assign it a value of 1. This causes the oldest period to */&lt;BR /&gt;/* be replaced by the newest period once &amp;amp;roll_num periods have been read. */&lt;BR /&gt;if E = &amp;amp;roll_num then E = 1;&lt;BR /&gt;else E + 1;&lt;/P&gt;&lt;P&gt;/* Assign value to proper element of the array */&lt;BR /&gt;summed[E] = sales;&lt;/P&gt;&lt;P&gt;/* Start summing once &amp;amp;roll_num values have been read from the data set */&lt;BR /&gt;if _N_ &amp;gt;= &amp;amp;roll_num then do;&lt;BR /&gt;roll_sum = sum(of summed[*]);&lt;BR /&gt;roll_avg = mean(of summed[*]);&lt;BR /&gt;end;&lt;BR /&gt;format roll_sum roll_avg comma10.2;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jul 2019 09:51:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577651#M163705</guid>
      <dc:creator>Dinslax</dc:creator>
      <dc:date>2019-07-30T09:51:33Z</dc:date>
    </item>
    <item>
      <title>Re: Moving sum by 12 months * moving weight by 3months</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577690#M163715</link>
      <description>&lt;P&gt;Moving sum by 12 months is easily calculated using PROC EXPAND. If you don't have PROC EXPAND in your SAS license, you can find workaround here by searching these forums.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As far as your weights are concerned&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data weights;
    set have;
    weight1 = floor((month-1)/3)+1;
    weight2 = lag(weight1);
    weight3 = lag2(weight1);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 30 Jul 2019 12:13:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Moving-sum-by-12-months-moving-weight-by-3months/m-p/577690#M163715</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-07-30T12:13:19Z</dc:date>
    </item>
  </channel>
</rss>

