-2
执行以下代码,结果错误。 验证第一个条件时,代码无法正常工作。 当值3应该是lag1时遗失... 感谢您的帮助。如果在验证第一个条件时未执行条件SAS
DATA VALUES;
INPUT VAL caract$ var1 var2;
DATALINES;
1 a 12 0
1 c 0 4
1 c 3 2
2 a 3 2
2 b 15 16
2 b 4 1
3 a 12 13
3 c 12 13
4 c 14 15
5 b 14 0
6 b 14 15
7 a 12 15
7 c 12 15
8 c 14 15
9 c 14 5
10 c 13 7
;
RUN;
%macro lag_var(dataset, lag);
data &dataset&lag;
set &dataset;
by VAL;
%do i=0 %to &lag;
if caract eq 'b' then
lag&i=lag&i(var1);
else lag&i = lag&i(var2);
%end;
if first.VAL then do;
count=0;
%do i=1 %to &lag;
lag&i=.;
%end;
end;
count+1;
%do i=1 %to &lag;
if (not first.VAL and count<=&i) then do;
lag&i=.;
end;
%end;
maxi = max(of lag1 - lag&lag);
run;
%mend lag_var;
%lag_var(VALUES,3);
的可能的复制[SAS EG lagcalculation问题,而不是计算拉斯为t - T-1](http://stackoverflow.com/questions/40485127/sas-eg-lagcalculation-issue-not-calculating- las-as-tt-1) – Reeza
我不明白你的意思是“遗失”。你的代码应该做什么,究竟发生了什么?另外,在这里阅读[如何提出良好的问题](http://meta.stackexchange.com/help/how-to-ask)和[如何编写一个最小的,工作的,可验证的例子](http:// stackoverflow .com/help/mcve) – giusti