<?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 a rolling mean for one observation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418755#M280426</link>
    <description>&lt;P&gt;I agree with&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;&amp;nbsp;that if you do not have more variables than in your sample data, his is the simplest way to go..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, if you do have more variables than that, then do something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input v0 v1 v2 v3;
datalines;
2 3 5 4
4 6 2 8
3 4 7 2
;
run;

data want(keep=m0-m3);
	set have;
	array temp{*} v0-v3;
	array wish{*} m0-m3;
	sum=0;
	do i=1 to dim(temp);
		sum+sum(of temp[i]);
		wish[i]=sum/i;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 06 Dec 2017 11:30:54 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2017-12-06T11:30:54Z</dc:date>
    <item>
      <title>Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418689#M280424</link>
      <description>&lt;P&gt;Hi Everybody,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a real trouble with a mean calculation.In fact, I want to calculate the rolling mean for this set using a array statement.&lt;/P&gt;&lt;P&gt;Here are samples of what I have and what I want.&amp;nbsp;In others words :&lt;/P&gt;&lt;P&gt;m0=mean(v0)=v0 ; m1=mean(v0, v1) ; m2=mean(of v0 -v2) &amp;amp; m3=mean(of v0 -v3).&lt;/P&gt;&lt;P&gt;I tried this code but got an error :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input v0 v1 v2 v3;
datalines;
2 3 5 4
4 6 2 8
3 4 7 2
;
run;

data want;
input m0 m1 m2 m3;
datalines;
2 2 3 3.25
4 5 4 5
3 3.5 5 4.25
;
run;

data want;
set have;

array temp(0:3) T0 - T3; 
array wish(0:3) m0 - m3;

do i = 0 to 3;

	if i = 0 then do;
	temp(i) = v0;
	wish(i) = temp(i)/(i+1);
	end;
	else temp(i) = temp(i-1) + vi;
	wish(i) = temp(i)/(i+1);

end;
run ;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;EM&gt;NOTE: Variable vi is uninitialized.&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;NOTE: Missing values were generated as a result of performing an operation on missing values.&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Each place is given by: (Number of times) at (Line):(Column).&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;9 at 1062:30 9 at 1063:22&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;NOTE: There were 3 observations read from the data set WORK.HAVE.&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;NOTE: The data set WORK.WANT has 3 observations and 14 variables.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Will appreciate any kind of help!&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Dec 2017 07:25:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418689#M280424</guid>
      <dc:creator>biri_29</dc:creator>
      <dc:date>2017-12-06T07:25:52Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418728#M280425</link>
      <description>&lt;P&gt;This:&lt;/P&gt;&lt;PRE class="language-sas lia-code-sample" data-lia-code-lang="sas" data-lia-code-macro="true"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token keyword"&gt;else&lt;/SPAN&gt; temp&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; temp&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token operator"&gt;-&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;+&lt;/SPAN&gt; vi&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;vi is never defined anywhere, I assume you want another array in there.&amp;nbsp; Anyways, something like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;PRE&gt;data want;
  set have;
  array m{3};
  m{1}=mean(v0);
  m{2}=mean(v0,v1);
  m{3}=mean(v0,v1,v2);
run;&lt;/PRE&gt;&lt;/P&gt;&lt;P&gt;&lt;BR data-mce-bogus="1" /&gt;&lt;/P&gt;&lt;P&gt;Is the simplest method for just 3 variables, adding arrays and loops just expands the code.&lt;/P&gt;&lt;P&gt;&lt;BR data-mce-bogus="1" /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR data-mce-bogus="1" /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR data-mce-bogus="1" /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Dec 2017 09:34:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418728#M280425</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-12-06T09:34:49Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418755#M280426</link>
      <description>&lt;P&gt;I agree with&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;&amp;nbsp;that if you do not have more variables than in your sample data, his is the simplest way to go..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, if you do have more variables than that, then do something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input v0 v1 v2 v3;
datalines;
2 3 5 4
4 6 2 8
3 4 7 2
;
run;

data want(keep=m0-m3);
	set have;
	array temp{*} v0-v3;
	array wish{*} m0-m3;
	sum=0;
	do i=1 to dim(temp);
		sum+sum(of temp[i]);
		wish[i]=sum/i;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 06 Dec 2017 11:30:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418755#M280426</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2017-12-06T11:30:54Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418757#M280427</link>
      <description>&lt;P&gt;Also, there seems to be a mismatch between what you say you want and your "want" data set.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Eg you say you want&amp;nbsp;&lt;STRONG&gt;m1=mean(v0, v1)&amp;nbsp;,&amp;nbsp;&lt;/STRONG&gt;which for the first observation means that &lt;STRONG&gt;m1=mean(2,3)=2.5,&amp;nbsp;&lt;/STRONG&gt;but&amp;nbsp;&lt;STRONG&gt;m1=2&amp;nbsp;&lt;/STRONG&gt;in your "want" data set? &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Dec 2017 11:33:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418757#M280427</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2017-12-06T11:33:46Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418872#M280428</link>
      <description>draycut, thank you so much, indeed your solution works perfectly. Of course, I have 24 variables but can you quikly explain me what does the statement sum=0?</description>
      <pubDate>Wed, 06 Dec 2017 16:51:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418872#M280428</guid>
      <dc:creator>biri_29</dc:creator>
      <dc:date>2017-12-06T16:51:41Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418873#M280429</link>
      <description>you're right, draycut. There it was a mistype.</description>
      <pubDate>Wed, 06 Dec 2017 16:58:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/418873#M280429</guid>
      <dc:creator>biri_29</dc:creator>
      <dc:date>2017-12-06T16:58:25Z</dc:date>
    </item>
    <item>
      <title>Re: Calculating a rolling mean for one observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/419157#M280430</link>
      <description>&lt;P&gt;Anytime, glad to help &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You do not need it. You would need it, had I written&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;sum=sum+sum(of temp[i]);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;instead of&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;sum+sum(of temp[i]);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 07 Dec 2017 12:26:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculating-a-rolling-mean-for-one-observation/m-p/419157#M280430</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2017-12-07T12:26:58Z</dc:date>
    </item>
  </channel>
</rss>

