<?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/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>
    <dc:creator>Linlin</dc:creator>
    <dc:date>2012-04-16T21:01:30Z</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>

