<?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: Modify Howard's code to meet different requirement in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85113#M18314</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;do value = 2, 5, 3, 1, 10, 7, 5; output; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro rollmean(n= ,var= ,sdl=work ,sds=);&lt;/P&gt;&lt;P&gt;data rollmean_&amp;amp;sds;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set &amp;amp;sdl..&amp;amp;sds;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %substr(&amp;amp;var,1,1)_rollsum = sum( lag(&amp;amp;var) %do i=2 %to &amp;amp;n; ,lag&amp;amp;i(&amp;amp;var) %end; );&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_&amp;lt;&amp;amp;n then call missing(%substr(&amp;amp;var,1,1)_rollsum);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%rollmean(n=3 ,var=value ,sds=test);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P align="center"&gt;&lt;/P&gt;&lt;P align="center"&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE cellspacing="0" class="Table"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 2&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; .&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 5&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; .&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 3&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 1&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;10&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 7&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 5&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 16 Apr 2012 22:00:55 GMT</pubDate>
    <dc:creator>FriedEgg</dc:creator>
    <dc:date>2012-04-16T22:00:55Z</dc:date>
    <item>
      <title>Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85104#M18305</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Below is Howard's code I copied from &lt;A _jive_internal="true" href="https://communities.sas.com/post!input.jspa?container=31&amp;amp;containerType=14"&gt;https://communities.sas.com/post!input.jspa?container=31&amp;amp;containerType=14&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do value = 2, 5, 3, 1, 10, 7, 5; output; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data rollsums;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array vv(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; retain vv1-vv3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; drop vv1-vv3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vv( mod(_n_-1,3) + 1 ) = value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ GE 3 then rollsum = sum( of vv(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;proc print;run;&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; Obs&amp;nbsp;&amp;nbsp;&amp;nbsp; value&amp;nbsp;&amp;nbsp;&amp;nbsp; rollsum&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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; 1&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; .&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; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&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; 3&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; 10&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; 4&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; 9&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; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&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; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&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; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to modify Howard'd code to get:&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; Obs&amp;nbsp;&amp;nbsp;&amp;nbsp; value&amp;nbsp;&amp;nbsp;&amp;nbsp; rollsum&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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; 1&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; .&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; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&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; 3&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; 7&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; 4&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; 8&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; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&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; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&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; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 17&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;No lag function please.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks - Linlin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 17:12:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85104#M18305</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-04-16T17:12:04Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85105#M18306</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Rearrange the sequence of events, use only two-variable array :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; do value = 2, 5, 3, 1, 10, 7, 5; output; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; data rollsums;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; array vv(2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; retain vv1-vv2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; drop vv1-vv2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set test;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if _n_ GE 3 then rollsum = sum( of vv(*) );&lt;BR /&gt;&amp;nbsp;&amp;nbsp; vv( mod(_n_-1,2) + 1 ) = value;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 17:21:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85105#M18306</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-04-16T17:21:26Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85106#M18307</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ooooooops!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;do _n_=1 to 12;&lt;/P&gt;&lt;P&gt;date=(intnx('month','01dec1979'd,_n_,'b'));&lt;/P&gt;&lt;P&gt;return=2+_n_/10;&lt;/P&gt;&lt;P&gt;liquity=4+_n_/10;&lt;/P&gt;&lt;P&gt;Volatility=round((2+_n_/9),.1);&lt;/P&gt;&lt;P&gt;format date mmddyy10.;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data rollmean;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array rr(6); retain rr1-rr6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array ll(6); retain ll1-ll6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array vv(6); retain vv1-vv6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; drop vv1-vv6 rr1-rr6 ll1-ll6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ Gt 6 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r_mean = mean( of rr(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_mean = mean( of ll(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_mean = round(mean( of vv(*) ),.01);&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rr( mod(_n_-1,6) + 1 ) = return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ll( mod(_n_-1,6) + 1 ) = liquity;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vv( mod(_n_-1,6) + 1 ) = Volatility;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hi&amp;nbsp; PG and&amp;nbsp; Haikuo,&lt;/P&gt;&lt;P&gt;which solution is better? this one or the Proc sql we provided: &lt;A _jive_internal="true" href="https://communities.sas.com/message/123556#123556"&gt;https://communities.sas.com/message/123556#123556&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks - Linlin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 18:00:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85106#M18307</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-04-16T18:00:23Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85107#M18308</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Linlin,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The query is slower but easier to figure out (to read, for me at least) and maintain. The query can also be moved over to any SQL server (okay, the date functions will have to be translated). Moreover, the datastep relies on presorting and the presence of &lt;SPAN style="text-decoration: underline;"&gt;one and only one&lt;/SPAN&gt; observation per month. I would personnally reserve the datastep approach for cases where the SQL lesser performance creates a problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 19:14:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85107#M18308</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-04-16T19:14:15Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85108#M18309</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use lag:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;do _n_=1 to 12;&lt;/P&gt;&lt;P&gt;date=(intnx('month','01dec1979'd,_n_,'b'));&lt;/P&gt;&lt;P&gt;return=2+_n_/10;&lt;/P&gt;&lt;P&gt;liquity=4+_n_/10;&lt;/P&gt;&lt;P&gt;Volatility=round((2+_n_/9),.1);&lt;/P&gt;&lt;P&gt;format date mmddyy10.;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro rollmean(n= ,var=);&lt;/P&gt;&lt;P&gt;%substr(&amp;amp;var,1,1)_mean = mean( lag(&amp;amp;var) %do i=2 %to &amp;amp;n; ,lag&amp;amp;i(&amp;amp;var) %end; );&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data rollmean2;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;%rollmean(n=6 ,var=return);&lt;/P&gt;&lt;P&gt;%rollmean(n=6 ,var=liquity);&lt;/P&gt;&lt;P&gt;%rollmean(n=6 ,var=volatility);&lt;/P&gt;&lt;P&gt;if _n_ lt 7 then call missing(r_mean,l_mean,v_mean);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 19:27:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85108#M18309</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2012-04-16T19:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85109#M18310</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi ... one other suggestion is to use a temporary array (values retained, no extra variables) ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;STRONG&gt;data rollsums;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;STRONG&gt;array vv(3) _temporary_;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;STRONG&gt;set test;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;STRONG&gt;if _n_ ge 3 then rollsum = sum(of vv(*));&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;STRONG&gt;vv(mod(_n_-1,3) + 1 ) = value;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 19:27:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85109#M18310</guid>
      <dc:creator>MikeZdeb</dc:creator>
      <dc:date>2012-04-16T19:27:39Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85110#M18311</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Mike!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This one also works:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do value = 2, 5, 3, 1, 10, 7, 5; output; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data rollsums;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array vv(0:2) _temporary_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ GE 3 then rollsum = sum( of vv(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vv( mod(_n_,3) ) = value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt; proc print;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 20:19:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85110#M18311</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-04-16T20:19:55Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85111#M18312</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;That's about as fast and compact as it gets! But Linlin, your original requirement was for the sum of the &lt;SPAN style="text-decoration: underline;"&gt;two&lt;/SPAN&gt; preceeding months. So the code should be :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data rollsums;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array vv(0:1) _temporary_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ GT 2 then rollsum = sum( of vv(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vv( mod(_n_, 2) ) = value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 20:28:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85111#M18312</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-04-16T20:28:54Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85112#M18313</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi PG,&lt;/P&gt;&lt;P&gt;You are right. Mike's code and my code are for the three proceeding observations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code below is the same as Howard's original code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do value = 2, 5, 3, 1, 10, 7, 5; output; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt; data rollsums_L;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array vv(0:2) _temporary_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set test;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vv( mod(_n_,3) ) = value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ gt 2 then rollsum = sum( of vv(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;proc print data=&amp;amp;syslast; title "from Linlin's code";run;&lt;/P&gt;&lt;P&gt;title;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Howard's original code */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data rollsums;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array vv(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; retain vv1-vv3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; drop vv1-vv3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vv( mod(_n_-1,3) + 1 ) = value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ GE 3 then rollsum = sum( of vv(*) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; proc print;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 21:01:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85112#M18313</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-04-16T21:01:30Z</dc:date>
    </item>
    <item>
      <title>Re: Modify Howard's code to meet different requirement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85113#M18314</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;do value = 2, 5, 3, 1, 10, 7, 5; output; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro rollmean(n= ,var= ,sdl=work ,sds=);&lt;/P&gt;&lt;P&gt;data rollmean_&amp;amp;sds;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set &amp;amp;sdl..&amp;amp;sds;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %substr(&amp;amp;var,1,1)_rollsum = sum( lag(&amp;amp;var) %do i=2 %to &amp;amp;n; ,lag&amp;amp;i(&amp;amp;var) %end; );&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_&amp;lt;&amp;amp;n then call missing(%substr(&amp;amp;var,1,1)_rollsum);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%rollmean(n=3 ,var=value ,sds=test);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P align="center"&gt;&lt;/P&gt;&lt;P align="center"&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE cellspacing="0" class="Table"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 2&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; .&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 5&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; .&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 3&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 1&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;10&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 7&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt; 5&lt;/TD&gt;&lt;TD class="Data" nowrap="nowrap" style="text-align: right;"&gt;18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Apr 2012 22:00:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Modify-Howard-s-code-to-meet-different-requirement/m-p/85113#M18314</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2012-04-16T22:00:55Z</dc:date>
    </item>
  </channel>
</rss>

