如何检索记录值以前的任意数量的记录?

时间:2014-06-26 20:32:33

标签: sas

我有一个像这样的数据集:

data test;
input Quantity Time Duration;
cards;
70 15 21 
85 15 14 
120 30 19 
60 15 0 
60 30 0 
60 30 37 
65 30 5 
30 30 30 
40 15 0
60 30 49 
;
run;

如果我的持续时间为0,我想将前一行的数量与当前行的数量相加,并将前一行的时间与当前行的时间相加,得到类似的结果:

70 15 21 
85 15 14 
120 30 19 
180 45 0 
240 75 0 
60 30 37 
65 30 5 
30 30 30 
70 45 0
60 30 49 

当持续时间= 0的连续行时会出现问题。

到目前为止,我已经尝试过这个:

data test; 
set test; 
lag_time = lag(time);
lag_quantity = lag(quantity);
if duration = 0 then do ; 
quantity = quantity + lag_quantity;
time = time + lag_time;
end;
run;

这给了我想要的东西,但仅限于第一个持续时间= 0。

有人有另一种方法吗?

非常感谢!!

1 个答案:

答案 0 :(得分:0)

data test1; 
set test; 
retain lag_quantity lag_time;
if duration = 0 then do ; 
quantity = quantity + lag_quantity;
time = time + lag_time;
end;
lag_time = time;
lag_quantity = quantity;
run;