求和之前的行 - SAS

时间:2017-02-15 17:53:44

标签: sas

Dv1  Dv2  Dv3  Dv4  Dv5  Dv6  Dv7  Dv8
 1    1    2    5    5    7    9    9
 3    4    8    8    8    9   10    .
 2    5    9   11   13   13    .    .
 4    4    5    9    9    .    .    .
 2    6    7    9    .    .    .    .
 2    4    6    .    .    .    .    .
 1    3    .    .    .    .    .    .
 3    .    .    .    .    .    .    .

我有上述数据的更大版本。每列都有一个因子,当乘以前一列数据时,会得到当前列数据。

因子=(前5行的总和)/(左前一列的前5行的总和) 例如。第2列因子=(3 + 4 + 6 + 4 + 5)/(1 + 2 + 2 + 4 + 2)= 2,结果数据为:

Dv1  Dv2  Dv3  Dv4  Dv5  Dv6  Dv7  Dv8
 1    1    2    5    5    7    9    9
 3    4    8    8    8    9   10    .
 2    5    9   11   13   13    .    .
 4    4    5    9    9    .    .    .
 2    6    7    9    .    .    .    .
 2    4    6    .    .    .    .    .
 1    3    .    .    .    .    .    .
 3    6    .    .    .    .    .    .

如果数据上方不存在5,请使用任何可用行。

我想用SAS填写这个数据。我的问题是如何总结前5行,我相信我可以从那里开始。

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

LAG功能。

sum_prev5 = lag(x) + lag2(x) + lag3(x) + lag4(x) + lag5(x);