我想创建一个变量Var2,该变量从第一个观察值开始等于1,并且Var2等于1,直到ID定义的by组的末尾为止。这是最小的工作示例:
ID年Var1
1 1。
1 2 0
1 3。
1 4 1
1 5。
我想创建以下输出:
ID年Var1 Var2
1 1。。
1 2 0 0
1 3。0
1 4 1 1
1 5。1个
我当前的代码如下:
DATA data1;
SET data0;
BY ID YEAR ;
IF LAST.ID THEN END = _N_;
IF Var1 > 0 THEN CNT=_N_;
RUN;
DATA data2;
SET data1;
BY ID YEAR ;
Var2 = 0;
IF Var1 = 1 THEN DO;
DO I = CNT TO END;
Var[I] = 1;
END;
END;
RUN;
但是,SAS不会随观察结果循环。
我不确定您的示例在做什么,但这很简单。
data want;
set have;
by id;
retain var2;
if first.id then var2=0;
if var1=1 then var2=1;
run;
保留var2
以保持其在各个观察值中的值,然后在看到1中的时将其设置为1 var1
。最后,在看到first.id
一行时将其设置为0 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句