我有一个像这样的数据集:
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。
有人有另一种方法吗?
非常感谢!!
答案 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;