<?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: Rolling standard deviation by category in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/570026#M160710</link>
    <description>&lt;P&gt;It is quite simple with a DO UNTIL loop and the MOD function:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm='|';
input Product $ Category Date :mmddyy. X;
format date yymmdd10.;
datalines;
A           |1               |05/30/2019 | 10
A           |1               |05/31/2019 | 9 
A           |1               |06/03/2019 | 11
A           |1               |06/04/2019 | 10
A           |1               |06/05/2019 | 8
A           |1               |06/06/2019 | 3
A           |1               |06/07/2019 | 12
A           |2               |05/30/2019 | 2
A           |2               |05/31/2019 | 4
A           |2               |06/03/2019 | 1    
A           |2               |06/04/2019 | 3
A           |2               |06/05/2019 | 7
A           |2               |06/06/2019 | 2     
A           |2               |06/07/2019 | 1
B           |1               |05/30/2019 |55
B           |1               |05/30/2019 | 66 
;

proc sort data=have; by product category date; run;

data want;
array xx{5};
do i = 1 by 1 until(last.category);
    set have; by product category;
    xx{1+mod(i,dim(xx))} = x;
    if i &amp;gt;= 5 then std = std(of xx{*});
    output;
    end;
drop xx: i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 29 Jun 2019 04:26:43 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2019-06-29T04:26:43Z</dc:date>
    <item>
      <title>Rolling standard deviation by category</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/569945#M160671</link>
      <description>&lt;P&gt;I have the following table:&lt;/P&gt;&lt;P&gt;Product | Category | Date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|X&lt;/P&gt;&lt;P&gt;A&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;|05/30/2019 | 10&lt;/P&gt;&lt;P&gt;A&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;|05/31/2019 | 9&amp;nbsp;&lt;/P&gt;&lt;P&gt;A&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;|06/03/2019 | 11&lt;/P&gt;&lt;P&gt;A&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;|06/04/2019 | 10&lt;/P&gt;&lt;P&gt;A&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;|06/05/2019 | 8&lt;/P&gt;&lt;P&gt;A&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;|06/06/2019 | 3&lt;/P&gt;&lt;P&gt;A&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;|06/07/2019 | 12&lt;/P&gt;&lt;P&gt;A&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;|05/30/2019 | 2&lt;/P&gt;&lt;P&gt;A&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;|05/31/2019 | 4&lt;/P&gt;&lt;P&gt;A&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;|06/03/2019 | 1&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A&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;|06/04/2019 | 3&lt;/P&gt;&lt;P&gt;A&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;|06/05/2019 | 7&lt;/P&gt;&lt;P&gt;A&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;|06/06/2019 | 2&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;A&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;|06/07/2019 | 1&lt;/P&gt;&lt;P&gt;B&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;|05/30/2019 |55&lt;/P&gt;&lt;P&gt;A&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;|05/30/2019 | 66&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And need to add a rolling 5 day standard deviation for each product/category. For example, my output needs to be:&amp;nbsp;&lt;/P&gt;&lt;P&gt;Product | Category | Date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|X&amp;nbsp; &amp;nbsp;|&amp;nbsp; Standard deviation&lt;/P&gt;&lt;P&gt;A&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;|05/30/2019 | 10 |&amp;nbsp; .&lt;/P&gt;&lt;P&gt;A&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;|05/31/2019 | 9&amp;nbsp; &amp;nbsp;|&amp;nbsp; .&lt;/P&gt;&lt;P&gt;A&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;|06/03/2019 | 11 |&amp;nbsp; .&lt;/P&gt;&lt;P&gt;A&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;|06/04/2019 | 10 |&amp;nbsp; .&lt;/P&gt;&lt;P&gt;A&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;|06/05/2019 | 8&amp;nbsp; &amp;nbsp;|&amp;nbsp; 1.140175&lt;/P&gt;&lt;P&gt;A&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;|06/06/2019 | 3&amp;nbsp; &amp;nbsp;|&amp;nbsp; 3.114482&lt;/P&gt;&lt;P&gt;A&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;|06/07/2019 | 12 |&amp;nbsp; 3.563706&lt;/P&gt;&lt;P&gt;A&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;|05/30/2019 | 2&amp;nbsp; &amp;nbsp;| .&lt;/P&gt;&lt;P&gt;A&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;|05/31/2019 | 4&amp;nbsp; &amp;nbsp;| .&lt;/P&gt;&lt;P&gt;A&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;|06/03/2019 | 1&amp;nbsp; &amp;nbsp;| .&amp;nbsp;&lt;/P&gt;&lt;P&gt;A&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;|06/04/2019 | 3&amp;nbsp; &amp;nbsp;| .&lt;/P&gt;&lt;P&gt;A&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;|06/05/2019 | 7&amp;nbsp; &amp;nbsp;|&amp;nbsp; 2.3021&lt;/P&gt;&lt;P&gt;A&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;|06/06/2019 | 2&amp;nbsp; &amp;nbsp;|&amp;nbsp; 2.3021&lt;/P&gt;&lt;P&gt;A&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;|06/07/2019 | 1&amp;nbsp; &amp;nbsp;| 2.4899&lt;/P&gt;&lt;P&gt;B&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;|05/30/2019 |55&amp;nbsp; | .&amp;nbsp;&lt;/P&gt;&lt;P&gt;A&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;|05/30/2019 | 66 | .&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Im able to get the output if I first create a table with just one category/product and then do:&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc sort data=RAW;&lt;BR /&gt;by product category date;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data test1;&lt;BR /&gt;set RAW;&lt;BR /&gt;obs + 1;&lt;BR /&gt;by product category;&lt;BR /&gt;if first.product or first.category then obs = 1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data calcs;&lt;BR /&gt;set test1;&lt;/P&gt;&lt;P&gt;array a[5] arr1-arr5;&lt;/P&gt;&lt;P&gt;retain arr1-arr5 .;&lt;/P&gt;&lt;P&gt;do tmp=5 to 2 by -1;&lt;BR /&gt;a[tmp] = a[tmp-1];&lt;BR /&gt;end;&lt;BR /&gt;a[1] = X;&lt;/P&gt;&lt;P&gt;if _n_ ge 5 then do;&lt;BR /&gt;std = std(of arr1-arr5);&lt;BR /&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there anyway I can edit the array above so it restarts when the product/category changes?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jun 2019 19:05:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/569945#M160671</guid>
      <dc:creator>joebear64</dc:creator>
      <dc:date>2019-06-28T19:05:15Z</dc:date>
    </item>
    <item>
      <title>Re: Rolling standard deviation by category</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/570026#M160710</link>
      <description>&lt;P&gt;It is quite simple with a DO UNTIL loop and the MOD function:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm='|';
input Product $ Category Date :mmddyy. X;
format date yymmdd10.;
datalines;
A           |1               |05/30/2019 | 10
A           |1               |05/31/2019 | 9 
A           |1               |06/03/2019 | 11
A           |1               |06/04/2019 | 10
A           |1               |06/05/2019 | 8
A           |1               |06/06/2019 | 3
A           |1               |06/07/2019 | 12
A           |2               |05/30/2019 | 2
A           |2               |05/31/2019 | 4
A           |2               |06/03/2019 | 1    
A           |2               |06/04/2019 | 3
A           |2               |06/05/2019 | 7
A           |2               |06/06/2019 | 2     
A           |2               |06/07/2019 | 1
B           |1               |05/30/2019 |55
B           |1               |05/30/2019 | 66 
;

proc sort data=have; by product category date; run;

data want;
array xx{5};
do i = 1 by 1 until(last.category);
    set have; by product category;
    xx{1+mod(i,dim(xx))} = x;
    if i &amp;gt;= 5 then std = std(of xx{*});
    output;
    end;
drop xx: i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 29 Jun 2019 04:26:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/570026#M160710</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-06-29T04:26:43Z</dc:date>
    </item>
    <item>
      <title>Re: Rolling standard deviation by category</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/570035#M160713</link>
      <description>&lt;P&gt;If you have PROC EXPAND, that will do the calculations, so you don't have to write and debug your own code.&lt;/P&gt;</description>
      <pubDate>Sat, 29 Jun 2019 10:54:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rolling-standard-deviation-by-category/m-p/570035#M160713</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-06-29T10:54:44Z</dc:date>
    </item>
  </channel>
</rss>

