SAS维护最后一个非空字符变量,直到它发生更改

时间:2014-01-17 14:39:42

标签: sas

在第3次和第4次观察中,状态值为空,我需要第3次和第4次观察等于第二次观察。这需要通过id设置的数据进行。

data z;
 input  id $ d status $;
 cards;
11111 01 a
11111 02 a
11111 03 .
11111 04 . 
11111 05 p
11111 06 . 
11111 07 . 
11111 08 . 
11111 09 a
11111 10 . 
11111 11 . 
11111 12 . 
11111 13 . 
11111 14 . 
11111 15 . 
11111 16 . 
11112 01 p
11112 02 . 
11112 03 . 
11112 04 . 
11112 05 p
11112 06 . 
11112 07 . 
11112 08 . 
11112 09 . 
11112 10 a
;
run;

1 个答案:

答案 0 :(得分:2)

这个数据步骤应该可以解决问题。

data want;
 set z;
 by id;
 length lastStatus $1;
 retain lastStatus;
 if first.id then lastStatus = status;
 else lastStatus = coalescec(status,lastStatus);
 drop status;
 rename lastStatus = status;
run;