<?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: cumulative mean in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47691#M9861</link>
    <description>Try this:&lt;BR /&gt;
&lt;BR /&gt;
data average;&lt;BR /&gt;
  set xxx;&lt;BR /&gt;
  total + value;&lt;BR /&gt;
  average = total/_n_;&lt;BR /&gt;
run;</description>
    <pubDate>Mon, 12 Jul 2010 21:30:07 GMT</pubDate>
    <dc:creator>SASKiwi</dc:creator>
    <dc:date>2010-07-12T21:30:07Z</dc:date>
    <item>
      <title>cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47689#M9859</link>
      <description>I have a monthly dataset going back a couple years.  is there a way in SQL I can&lt;BR /&gt;
compute an average for each row going back to the first row.&lt;BR /&gt;
&lt;BR /&gt;
values &lt;BR /&gt;
month value&lt;BR /&gt;
jan 1&lt;BR /&gt;
Feb 2&lt;BR /&gt;
Mar 3&lt;BR /&gt;
Apr 4&lt;BR /&gt;
&lt;BR /&gt;
For example, average for first row would be '1' average for second row would be 1.5 and 3rd would be 3</description>
      <pubDate>Mon, 12 Jul 2010 16:22:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47689#M9859</guid>
      <dc:creator>wkossack</dc:creator>
      <dc:date>2010-07-12T16:22:22Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47690#M9860</link>
      <description>not sure about sql but you can do it in data step using retain function..</description>
      <pubDate>Mon, 12 Jul 2010 20:05:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47690#M9860</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-07-12T20:05:34Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47691#M9861</link>
      <description>Try this:&lt;BR /&gt;
&lt;BR /&gt;
data average;&lt;BR /&gt;
  set xxx;&lt;BR /&gt;
  total + value;&lt;BR /&gt;
  average = total/_n_;&lt;BR /&gt;
run;</description>
      <pubDate>Mon, 12 Jul 2010 21:30:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47691#M9861</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2010-07-12T21:30:07Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47692#M9862</link>
      <description>how about in SQL?</description>
      <pubDate>Tue, 13 Jul 2010 15:00:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47692#M9862</guid>
      <dc:creator>wkossack</dc:creator>
      <dc:date>2010-07-13T15:00:31Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47693#M9863</link>
      <description>Your task is far easier to do in a DATA step because you can process one row at a time and accumulate results as you go. This technique is impossible in simple SQL because it does not process row by row. An SQL solution would require multiple queries and probably joining as well. Why not just use the easy DATA step way?!</description>
      <pubDate>Tue, 13 Jul 2010 23:37:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47693#M9863</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2010-07-13T23:37:29Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47694#M9864</link>
      <description>what I don't understand is that when I started working on this I found SQL functions (I think it was in oracle) that would compute cumulative means etc but when I tried them in SAS they did not work</description>
      <pubDate>Wed, 14 Jul 2010 15:50:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47694#M9864</guid>
      <dc:creator>wkossack</dc:creator>
      <dc:date>2010-07-14T15:50:16Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47695#M9865</link>
      <description>Not everything is identical in SQL implemented for Oracle and SQL implemented in SAS. There are differences!</description>
      <pubDate>Wed, 14 Jul 2010 17:40:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47695#M9865</guid>
      <dc:creator>Paige</dc:creator>
      <dc:date>2010-07-14T17:40:27Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47696#M9866</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; I have the slightly different problem. I want to calculate the cumulative mean but want to insert classification by an identification number. Take a look at the sample below. The first table show what i get when i run the data stpe by SASkiwin above. But i want tell SAS that it has to repeat the same thing for difference classes within the same dataset. The BY variable did not help! Any suggestions guys? I am relatively new to SAS!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 320px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" width="64"&gt;time_period&lt;/TD&gt;&lt;TD class="xl63" width="64"&gt;ID&lt;/TD&gt;&lt;TD class="xl63" width="64"&gt;income&lt;/TD&gt;&lt;TD class="xl63" width="64"&gt;total&lt;/TD&gt;&lt;TD class="xl63" width="64"&gt;average&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;50&lt;/TD&gt;&lt;TD class="xl63"&gt;50&lt;/TD&gt;&lt;TD class="xl63"&gt;50&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;43&lt;/TD&gt;&lt;TD class="xl63"&gt;93&lt;/TD&gt;&lt;TD class="xl63"&gt;71.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;3&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;12&lt;/TD&gt;&lt;TD class="xl63"&gt;105&lt;/TD&gt;&lt;TD class="xl63"&gt;82.66667&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;34&lt;/TD&gt;&lt;TD class="xl63"&gt;139&lt;/TD&gt;&lt;TD class="xl63"&gt;96.75&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;60&lt;/TD&gt;&lt;TD class="xl63"&gt;199&lt;/TD&gt;&lt;TD class="xl63"&gt;117.2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;21&lt;/TD&gt;&lt;TD class="xl63"&gt;220&lt;/TD&gt;&lt;TD class="xl63"&gt;134.3333&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;3&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;34&lt;/TD&gt;&lt;TD class="xl63"&gt;254&lt;/TD&gt;&lt;TD class="xl63"&gt;151.4286&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;12&lt;/TD&gt;&lt;TD class="xl63"&gt;266&lt;/TD&gt;&lt;TD class="xl63"&gt;165.75&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;&lt;SPAN style="text-decoration: underline;"&gt;this is what I want (below)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;TD class="xl63"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;time_period&lt;/TD&gt;&lt;TD class="xl63"&gt;ID&lt;/TD&gt;&lt;TD class="xl63"&gt;income&lt;/TD&gt;&lt;TD class="xl63"&gt;total&lt;/TD&gt;&lt;TD class="xl63"&gt;average&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;50&lt;/TD&gt;&lt;TD class="xl63"&gt;50&lt;/TD&gt;&lt;TD class="xl63"&gt;50&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;43&lt;/TD&gt;&lt;TD class="xl63"&gt;93&lt;/TD&gt;&lt;TD class="xl63"&gt;71.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;3&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;12&lt;/TD&gt;&lt;TD class="xl63"&gt;105&lt;/TD&gt;&lt;TD class="xl63"&gt;82.66667&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl63"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;34&lt;/TD&gt;&lt;TD class="xl63"&gt;139&lt;/TD&gt;&lt;TD class="xl63"&gt;96.75&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;1&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;60&lt;/TD&gt;&lt;TD class="xl63"&gt;34&lt;/TD&gt;&lt;TD class="xl63"&gt;34&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;21&lt;/TD&gt;&lt;TD class="xl63"&gt;81&lt;/TD&gt;&lt;TD class="xl63"&gt;57.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;3&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;34&lt;/TD&gt;&lt;TD class="xl63"&gt;115&lt;/TD&gt;&lt;TD class="xl63"&gt;76.66667&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20"&gt;4&lt;/TD&gt;&lt;TD class="xl63"&gt;2&lt;/TD&gt;&lt;TD class="xl63"&gt;12&lt;/TD&gt;&lt;TD class="xl63"&gt;127&lt;/TD&gt;&lt;TD class="xl63"&gt;89.25&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jessica&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 May 2014 09:19:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47696#M9866</guid>
      <dc:creator>Jessica98</dc:creator>
      <dc:date>2014-05-22T09:19:43Z</dc:date>
    </item>
    <item>
      <title>Re: cumulative mean</title>
      <link>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47697#M9867</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In answer to your initial post, it should be real easy to get the cumulative average:&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;&amp;nbsp; attrib month format=$20. month_id value format=best.;&lt;BR /&gt;&amp;nbsp; infile datalines delimiter=",";&lt;BR /&gt;&amp;nbsp; input month $ month_id value;&lt;BR /&gt;datalines;&lt;BR /&gt;jan,1,45&lt;BR /&gt;feb,2,32&lt;BR /&gt;mar,3,67&lt;BR /&gt;apr,4,34&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create table WANT as&lt;BR /&gt;&amp;nbsp; select&amp;nbsp; A.*,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select SUM(VALUE) from WORK.HAVE where MONTH_ID &amp;lt;= A.MONTH_ID) / (select COUNT(MONTH) from WORK.HAVE where MONTH_ID &amp;lt;= A.MONTH_ID) as CUMULATIVE_AVG&lt;BR /&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; HAVE A;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In answer to your latest post (which I just posted on the other post), with the groupings:&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;&amp;nbsp; attrib id time_period income format=best.;&lt;BR /&gt;&amp;nbsp; infile datalines delimiter=",";&lt;BR /&gt;&amp;nbsp; input id time_period income;&lt;BR /&gt;datalines;&lt;BR /&gt;1,1,45&lt;BR /&gt;1,2,32&lt;BR /&gt;1,3,67&lt;BR /&gt;1,4,34&lt;BR /&gt;2,1,23&lt;BR /&gt;2,2,89&lt;BR /&gt;2,3,78&lt;BR /&gt;2,4,10&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create table WANT as&lt;BR /&gt;&amp;nbsp; select&amp;nbsp; A.*,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select SUM(INCOME) from WORK.HAVE where ID=A.ID and TIME_PERIOD &amp;lt;= A.TIME_PERIOD) as TOTAL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALCULATED TOTAL / (select COUNT(ID) from WORK.HAVE where ID=A.ID and TIME_PERIOD &amp;lt;= A.TIME_PERIOD) as CUMULATIVE_AVG&lt;BR /&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; HAVE A;&lt;BR /&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 May 2014 09:44:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/cumulative-mean/m-p/47697#M9867</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-05-22T09:44:04Z</dc:date>
    </item>
  </channel>
</rss>

