Вот базовое использование оператора сохранения.Я не могу точно сказать, что вам нужно из вашего описания.Может быть, вам нужно retain
вторая переменная и затем использовать if ... then ... else ...
(даты совпадают, затем ...., еще ....) В любом случае, возможно, это поможет вам начать ...
DATA in;
INPUT id var1 ;
DATALINES;
1 12
1 24
1 26
2 20
2 25
2 11
;
DATA out (drop=var1_lag);
set in;
by id;
if first.id then diff=.;
else diff = var1 - var1_lag;
var1_lag = var1;
retain var1_lag;
PROC PRINT data=out;
RUN;
Вывод:
Obs id var1 diff
1 1 12 .
2 1 24 12
3 1 26 2
4 2 20 .
5 2 25 5
6 2 11 -14