<?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: Programming issue on standard deviation on obs for five years in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623158#M183397</link>
    <description>&lt;P&gt;Thank you so much, mkeintz. Your code worked well.&lt;/P&gt;&lt;DIV&gt;Another question: how can I put condition that your program works if data for at least three of last five years (t-4,t) are available?&lt;/DIV&gt;&lt;DIV&gt;I tried to insert one line in your code, but it does not work as follows:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;data g1;&lt;BR /&gt;set s8;&lt;BR /&gt;by gvkey fyear;&lt;BR /&gt;array t {5} _temporary_;&lt;BR /&gt;if first.gvkey then call missing(of t{*});&lt;BR /&gt;&amp;nbsp;t{1+mod(_n_,5)}=aqres;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&amp;nbsp;if n(of t{*})&amp;gt;3 then do;&lt;/FONT&gt;&lt;BR /&gt;&amp;nbsp;if n(of t{*})=5 then aqresstd=std(of t{*});&lt;BR /&gt;&amp;nbsp;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help will be highly appreciated.&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Joon&lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 07 Feb 2020 20:12:08 GMT</pubDate>
    <dc:creator>joon1</dc:creator>
    <dc:date>2020-02-07T20:12:08Z</dc:date>
    <item>
      <title>Programming issue on standard deviation on obs for five years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/622885#M183256</link>
      <description>&lt;P&gt;Dear Madam/Sir,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to have standard deviations (aqresstd) on five values (variable name: aqres) for the past four years (t-4,t-3,t-2,t-1) and the current year (t).&lt;/P&gt;&lt;P&gt;I ran the data using the suggested program from this community and there is no error message as follows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data s9;&lt;BR /&gt;do n=1 by 1 until(last.gvkey);&lt;BR /&gt;set s8;&lt;BR /&gt;by gvkey fyear;&lt;BR /&gt;array t(50);&lt;BR /&gt;if n&amp;gt;=5 then aqresstd=std(of t(*));&lt;BR /&gt;t(n)=aqres;&lt;BR /&gt;if n(of t(*))&amp;gt;4 then do;k=n-4; call missing(t(k));end;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;drop n t:;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;NOTE: There were 206263 observations read from the data set WORK.S8.&lt;BR /&gt;NOTE: The data set WORK.S9 has 206263 observations and 70 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.54 seconds&lt;BR /&gt;cpu time 0.54 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, I do not have correct standard deviation values as follows;&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gvkey&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fyear&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;DIV&gt;&lt;DIV align="center"&gt;34567891011121314151617181920212223242526272829303132 &lt;TABLE cellspacing="0" cellpadding="5"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1989&lt;/TD&gt;&lt;TD&gt;29.51&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1990&lt;/TD&gt;&lt;TD&gt;-14.73&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1991&lt;/TD&gt;&lt;TD&gt;10.10&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1992&lt;/TD&gt;&lt;TD&gt;1.12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1993&lt;/TD&gt;&lt;TD&gt;2.64&lt;/TD&gt;&lt;TD&gt;18.456&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1994&lt;/TD&gt;&lt;TD&gt;-0.51&lt;/TD&gt;&lt;TD&gt;10.439&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1995&lt;/TD&gt;&lt;TD&gt;-6.02&lt;/TD&gt;&lt;TD&gt;4.688&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1996&lt;/TD&gt;&lt;TD&gt;26.90&lt;/TD&gt;&lt;TD&gt;3.774&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1997&lt;/TD&gt;&lt;TD&gt;22.23&lt;/TD&gt;&lt;TD&gt;14.544&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1998&lt;/TD&gt;&lt;TD&gt;9.38&lt;/TD&gt;&lt;TD&gt;16.334&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;1999&lt;/TD&gt;&lt;TD&gt;25.65&lt;/TD&gt;&lt;TD&gt;14.752&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;1.07&lt;/TD&gt;&lt;TD&gt;8.017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;-67.39&lt;/TD&gt;&lt;TD&gt;11.407&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;-24.66&lt;/TD&gt;&lt;TD&gt;41.002&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2003&lt;/TD&gt;&lt;TD&gt;-3.85&lt;/TD&gt;&lt;TD&gt;39.755&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2004&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;TD&gt;31.183&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2005&lt;/TD&gt;&lt;TD&gt;0.65&lt;/TD&gt;&lt;TD&gt;30.961&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2006&lt;/TD&gt;&lt;TD&gt;3.30&lt;/TD&gt;&lt;TD&gt;12.008&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2007&lt;/TD&gt;&lt;TD&gt;56.96&lt;/TD&gt;&lt;TD&gt;2.953&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2008&lt;/TD&gt;&lt;TD&gt;81.35&lt;/TD&gt;&lt;TD&gt;27.817&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2009&lt;/TD&gt;&lt;TD&gt;40.46&lt;/TD&gt;&lt;TD&gt;40.058&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2010&lt;/TD&gt;&lt;TD&gt;-38.11&lt;/TD&gt;&lt;TD&gt;32.775&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2011&lt;/TD&gt;&lt;TD&gt;48.90&lt;/TD&gt;&lt;TD&gt;51.657&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2012&lt;/TD&gt;&lt;TD&gt;-8.55&lt;/TD&gt;&lt;TD&gt;50.672&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2013&lt;/TD&gt;&lt;TD&gt;53.31&lt;/TD&gt;&lt;TD&gt;41.223&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2014&lt;/TD&gt;&lt;TD&gt;-235.42&lt;/TD&gt;&lt;TD&gt;44.676&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;11.76&lt;/TD&gt;&lt;TD&gt;136.268&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;-25.15&lt;/TD&gt;&lt;TD&gt;129.714&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;-7.02&lt;/TD&gt;&lt;TD&gt;128.429&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001004&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;TD&gt;-52.38&lt;/TD&gt;&lt;TD&gt;115.299&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;&lt;P&gt;It will be greatly appreciative if you can advise me how to fix the program. Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sincerely,&lt;/P&gt;&lt;P&gt;Joon&lt;/P&gt;</description>
      <pubDate>Thu, 06 Feb 2020 22:00:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/622885#M183256</guid>
      <dc:creator>joon1</dc:creator>
      <dc:date>2020-02-06T22:00:28Z</dc:date>
    </item>
    <item>
      <title>Re: Programming issue on standard deviation on obs for five years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/622911#M183270</link>
      <description>&lt;P&gt;Please explain what is wrong.&lt;/P&gt;</description>
      <pubDate>Fri, 07 Feb 2020 00:02:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/622911#M183270</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2020-02-07T00:02:32Z</dc:date>
    </item>
    <item>
      <title>Re: Programming issue on standard deviation on obs for five years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/622919#M183276</link>
      <description>&lt;P&gt;You want rolling 5-year STD of aqres for (current year back to current year-4), where your data (from Compustat) is a series of annual fiscal years within each company id (GVKEY).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is a much simpler approach:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data s9;
  set s8;
  by gvkey fyear;
  array t {5} _temporary_;

  if first.gvkey then call missing(of t{*});
  t{1+mod(_n_,5)}=aqres;
  if n(of t{*})=5 then aqresstd=std(of t{*});
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 07 Feb 2020 00:39:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/622919#M183276</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-02-07T00:39:51Z</dc:date>
    </item>
    <item>
      <title>Re: Programming issue on standard deviation on obs for five years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623158#M183397</link>
      <description>&lt;P&gt;Thank you so much, mkeintz. Your code worked well.&lt;/P&gt;&lt;DIV&gt;Another question: how can I put condition that your program works if data for at least three of last five years (t-4,t) are available?&lt;/DIV&gt;&lt;DIV&gt;I tried to insert one line in your code, but it does not work as follows:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;data g1;&lt;BR /&gt;set s8;&lt;BR /&gt;by gvkey fyear;&lt;BR /&gt;array t {5} _temporary_;&lt;BR /&gt;if first.gvkey then call missing(of t{*});&lt;BR /&gt;&amp;nbsp;t{1+mod(_n_,5)}=aqres;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&amp;nbsp;if n(of t{*})&amp;gt;3 then do;&lt;/FONT&gt;&lt;BR /&gt;&amp;nbsp;if n(of t{*})=5 then aqresstd=std(of t{*});&lt;BR /&gt;&amp;nbsp;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help will be highly appreciated.&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Joon&lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 07 Feb 2020 20:12:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623158#M183397</guid>
      <dc:creator>joon1</dc:creator>
      <dc:date>2020-02-07T20:12:08Z</dc:date>
    </item>
    <item>
      <title>Re: Programming issue on standard deviation on obs for five years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623255#M183448</link>
      <description>&lt;P&gt;If you need a minimum of three observations (why would 3 obs ever be sufficient for a std estimate?), just prefix the aqresstd=std(of t{*}) assignment with "if n(of t{*})&amp;gt;=3 then ", as below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But wait a minute.&amp;nbsp; Are you saying that you have some years missing?&amp;nbsp; So my question is&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Do you have completely missing records for some fiscal years?&amp;nbsp; (i.e. some FYEARS are skipped)&lt;BR /&gt;or&lt;/LI&gt;
&lt;LI&gt;Do you have all the fiscal years, but for some of those years the aqres variable is missing?&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In either case, use&amp;nbsp;MOD(FYEAR,5) instead of MOD(_N_,5).&amp;nbsp; That&amp;nbsp;change wouldn't hurt situation 2, and would be essential for situation 1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But if you have situation 1,&amp;nbsp;then "holes" in the fyear sequence must be set to missing in the corresponding elements of the T array, as in the do loop below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data g1;
  set s8;
  by gvkey ;
  array t {5} _temporary_;
  if first.gvkey then call missing(of t{*});
  do fy=sum(lag(fyear),1) to fyear-1; 
    t{1+mod(fy,5)}=.;
  end;
  t{1+mod(fyear,5)}=aqres;
  if n(of t{*})&amp;gt;3 then aqresstd=std(of t{*});
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 08 Feb 2020 02:27:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623255#M183448</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-02-08T02:27:24Z</dc:date>
    </item>
    <item>
      <title>Re: Programming issue on standard deviation on obs for five years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623323#M183495</link>
      <description>&lt;P&gt;Thank you so much, mkeintz. I greatly appreciate it.&lt;/P&gt;&lt;P&gt;Joon1&lt;/P&gt;</description>
      <pubDate>Sat, 08 Feb 2020 17:45:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Programming-issue-on-standard-deviation-on-obs-for-five-years/m-p/623323#M183495</guid>
      <dc:creator>joon1</dc:creator>
      <dc:date>2020-02-08T17:45:39Z</dc:date>
    </item>
  </channel>
</rss>

