<?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: Sum column based on row count in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/390214#M66113</link>
    <description>&lt;PRE&gt;

data have;
infile cards expandtabs;
input Item	Sales;
cards;
1	10	30
1	10	30
1	10	30
1	10	30
1	10	30
1	10	30
1	10	20
1	10	10
2	20	60
2	20	60
2	20	60
2	20	60
2	20	60
2	20	40
2	20
;
run;
data have;
 set have;
 by item;
 if first.item then n=0;
 n+1;
run;
proc sql;
select a.*,(select sum(sales) from have where item=a.item and 
n between a.n and a.n+2) as rolling_sum
 from have as a;
quit;
&lt;/PRE&gt;</description>
    <pubDate>Wed, 23 Aug 2017 12:54:11 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2017-08-23T12:54:11Z</dc:date>
    <item>
      <title>Sum column based on row count</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/389980#M66089</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have searched all over and can't seem to find an answer for this. For each row, I am attempting to sum the values of the next x rows (3 in the example below) for each item.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Example: Item 1, row count for&amp;nbsp;aggregation = 3, next 3 rows countain 10 in each row which equals a sum of 30.&amp;nbsp; It only sums for the item that corresponds to the row that the sum calculation is on (similar to a group by).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The example below is far simpler than my real data which contains different values for sales for each row.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I am assuming that this would be an iterating do until loop of some sort but I can't seem to think of a strategy.&amp;nbsp; Thanks for all of your insight!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Item&lt;/TD&gt;&lt;TD&gt;Sales&lt;/TD&gt;&lt;TD&gt;SumRolling&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 22 Aug 2017 18:51:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/389980#M66089</guid>
      <dc:creator>Eric21</dc:creator>
      <dc:date>2017-08-22T18:51:15Z</dc:date>
    </item>
    <item>
      <title>Re: Sum column based on row count</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/389985#M66090</link>
      <description>&lt;P&gt;Do you have SAS ETS? If so, a CONVERT statement is your best bet.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If not, the quickest way, IMO is to reverse the data, use the LAG function and then reverse the data order again. Assuming you can do the re-ordering yourself, here's how the data step may look.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want; 
by item sales;

l1=lag(sales);
l2=lag2(sales);
l3=lag3(sales);

if first.item then count=1; else count+1;

if count &amp;gt; 3 then do;
sum = sum(l1, l2, l3);
end;

run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 22 Aug 2017 19:12:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/389985#M66090</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-08-22T19:12:19Z</dc:date>
    </item>
    <item>
      <title>Re: Sum column based on row count</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/390214#M66113</link>
      <description>&lt;PRE&gt;

data have;
infile cards expandtabs;
input Item	Sales;
cards;
1	10	30
1	10	30
1	10	30
1	10	30
1	10	30
1	10	30
1	10	20
1	10	10
2	20	60
2	20	60
2	20	60
2	20	60
2	20	60
2	20	40
2	20
;
run;
data have;
 set have;
 by item;
 if first.item then n=0;
 n+1;
run;
proc sql;
select a.*,(select sum(sales) from have where item=a.item and 
n between a.n and a.n+2) as rolling_sum
 from have as a;
quit;
&lt;/PRE&gt;</description>
      <pubDate>Wed, 23 Aug 2017 12:54:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Sum-column-based-on-row-count/m-p/390214#M66113</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-08-23T12:54:11Z</dc:date>
    </item>
  </channel>
</rss>

