<?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 rolling standard deviation using all prior observations in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500263#M133201</link>
    <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
input FIRM YEAR ROA;
cards;
1 1999 0.05
1 2000 0.048
1 2001 0.01
1 2002 0.02
2 1999 0.024
2 2000 0.07
2 2001 0.065
run;
proc format ;
 value prevyr (multilabel) 1999      ='Pre1999'
                           1999-2000 ='Pre2000'
                           1999-2001 ='Pre2001'
                           1999-2002 ='Pre2002'
                           1999-2003 ='Pre2003'
                           1999-2004 ='Pre2004';
run;
proc summary nway; 
  class FIRM ; 
  class YEAR / mlf; 
  var ROA; 
  output out=WANT std=;
  format YEAR prevyr.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;FIRM&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;YEAR&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;_TYPE_&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;_FREQ_&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ROA&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre1999&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2000&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0.001414&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2001&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.022539&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2002&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.020067&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2003&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.020067&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2004&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.020067&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre1999&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2000&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0.032527&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2001&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2002&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2003&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2004&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 01 Oct 2018 03:38:27 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2018-10-01T03:38:27Z</dc:date>
    <item>
      <title>Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500257#M133196</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need SAS to calculate rolling standard deviation and number of observation it has used. Instead of controlling for number of observations I need to use (I know I can use expand in this case), I want to use all observations prior that year.&amp;nbsp; Since my dataset is very large, proc sql may be very slow.&amp;nbsp; I will appreciate it very much if someone can help me with this!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the data I have&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;firm&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;roa&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;0.048&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;0.01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;0.02&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.024&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;0.07&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;0.065&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the data I want:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;firm&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;roa&lt;/TD&gt;&lt;TD&gt;std&lt;/TD&gt;&lt;TD&gt;count&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.05&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;1&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;0.048&lt;/TD&gt;&lt;TD&gt;0.001414&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;0.01&lt;/TD&gt;&lt;TD&gt;0.022539&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;0.02&lt;/TD&gt;&lt;TD&gt;0.020067&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.024&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;2&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;0.07&lt;/TD&gt;&lt;TD&gt;0.032527&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;0.065&lt;/TD&gt;&lt;TD&gt;0.025239&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks!&lt;/P&gt;</description>
      <pubDate>Mon, 01 Oct 2018 02:45:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500257#M133196</guid>
      <dc:creator>daradanye</dc:creator>
      <dc:date>2018-10-01T02:45:08Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500263#M133201</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
input FIRM YEAR ROA;
cards;
1 1999 0.05
1 2000 0.048
1 2001 0.01
1 2002 0.02
2 1999 0.024
2 2000 0.07
2 2001 0.065
run;
proc format ;
 value prevyr (multilabel) 1999      ='Pre1999'
                           1999-2000 ='Pre2000'
                           1999-2001 ='Pre2001'
                           1999-2002 ='Pre2002'
                           1999-2003 ='Pre2003'
                           1999-2004 ='Pre2004';
run;
proc summary nway; 
  class FIRM ; 
  class YEAR / mlf; 
  var ROA; 
  output out=WANT std=;
  format YEAR prevyr.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;FIRM&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;YEAR&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;_TYPE_&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;_FREQ_&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ROA&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre1999&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2000&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0.001414&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2001&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.022539&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2002&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.020067&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2003&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.020067&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2004&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.020067&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre1999&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2000&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0.032527&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2001&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2002&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2003&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Pre2004&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0.025239&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Oct 2018 03:38:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500263#M133201</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-10-01T03:38:27Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500268#M133204</link>
      <description>&lt;P&gt;DIY method&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
count = 0;
s1 = 0;
s2 = 0;
do until(last.firm);
    set have; by firm;
    if not missing(roa) then do;
        count = count + 1;
        s1 = s1 + roa;
        s2 = s2 + roa*roa;
        if count &amp;gt; 1 then std = sqrt((count*s2-s1*s1)/(count*(count-1)));
        end;
    output;
    end;
drop s1 s2;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 01 Oct 2018 05:16:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500268#M133204</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-10-01T05:16:37Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500281#M133210</link>
      <description>&lt;P&gt;It can be done using a datastep, e.g.:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  do until(last.firm);
    set have;
    by firm year;
	_sum+roa;
	_sqsum+roa*roa;
	count+not missing(roa);
	if last.year then do;
	  if count&amp;lt;2 then
	    std=.;
	  else std=sqrt((count*_sqsum-_sum*_sum)/(count*(count-1)));
	  end;
	  output;
	end;
  call missing (count,_sum,_sqsum);
  drop _s:;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 01 Oct 2018 08:02:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500281#M133210</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-10-01T08:02:43Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500299#M133215</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
input FIRM YEAR ROA;
cards;
1 1999 0.05
1 2000 0.048
1 2001 0.01
1 2002 0.02
2 1999 0.024
2 2000 0.07
2 2001 0.065
;
run;

data want;
 set have;
 by firm;
 array x{999} _temporary_;
 if first.firm then do;n=0;call missing(of x{*});end;
 n+1;
 x{n}=roa;
 std=std(of x{*});
 
run;

proc print;run;
 
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 01 Oct 2018 10:31:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500299#M133215</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-10-01T10:31:07Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500361#M133244</link>
      <description>&lt;P&gt;Hi Ksharp,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks so much !&amp;nbsp; But I still have two more questions:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(1)&amp;nbsp; What if I have more than one variables (say about 10 variables) that needs to calculate std?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(2) What if there are missing values and I only want to calculate the number of observations that have been used to calculate standard deviation?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The data I have:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;firm&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;roa&lt;/TD&gt;&lt;TD&gt;bm&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.05&lt;/TD&gt;&lt;TD&gt;3.2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;0.048&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;4.4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;0.02&lt;/TD&gt;&lt;TD&gt;2.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.024&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;0.065&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The data I want:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;firm&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;roa&lt;/TD&gt;&lt;TD&gt;stdroa&lt;/TD&gt;&lt;TD&gt;countroa&lt;/TD&gt;&lt;TD&gt;bm&lt;/TD&gt;&lt;TD&gt;stdbm&lt;/TD&gt;&lt;TD&gt;countbm&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.05&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3.2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;0.048&lt;/TD&gt;&lt;TD&gt;0.0014&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.0014&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4.4&lt;/TD&gt;&lt;TD&gt;0.84853&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;0.02&lt;/TD&gt;&lt;TD&gt;0.0168&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2.5&lt;/TD&gt;&lt;TD&gt;0.9609&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;0.024&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;0.065&lt;/TD&gt;&lt;TD&gt;0.029&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;0.70711&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many Thanks!&lt;/P&gt;&lt;P&gt;Dara&lt;/P&gt;</description>
      <pubDate>Mon, 01 Oct 2018 13:45:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500361#M133244</guid>
      <dc:creator>daradanye</dc:creator>
      <dc:date>2018-10-01T13:45:20Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating rolling standard deviation using all prior observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500660#M133360</link>
      <description>&lt;PRE&gt;
1) You need 10 temporary array.
2)
data HAVE;
infile cards expandtabs;
input FIRM YEAR ROA bm;
cards;
1	1999	0.05	3.2
1	2000	0.048	 .
1	2001	 .	4.4
1	2002	0.02	2.5
2	1999	0.024	 .
2	2000	 .	2
2	2001	0.065	3
;
run;

data want;
 set have;
 by firm;
 array x1{999} _temporary_;
 array x2{999} _temporary_;

 if first.firm then do;n=0;call missing(of x1{*} x2{*]);end;
 n+1;
 x1{n}=roa;
 x2{n}=bm;
 count_roa=n(of x1{*});
 std_roa=std(of x1{*});
 count_bm=n(of x2{*});
 std_bm=std(of x2{*});
drop n;
run;




&lt;/PRE&gt;</description>
      <pubDate>Tue, 02 Oct 2018 10:29:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-rolling-standard-deviation-using-all-prior/m-p/500660#M133360</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-10-02T10:29:16Z</dc:date>
    </item>
  </channel>
</rss>

