SAS保留最后一个非空字符变量,直到其更改
在第三次和第四次观察中,status的值为null,我需要第三次和第四次观察来等于第二次ob。这需要通过id设置的数据来实现SAS保留最后一个非空字符变量,直到其更改,sas,Sas,在第三次和第四次观察中,status的值为null,我需要第三次和第四次观察来等于第二次ob。这需要通过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 1
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;
这个数据步骤应该可以做到这一点
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;
目前还不完全清楚期望的结果是什么。您是否只希望每个id的第三个和第四个观察值与第二个相等?那么如何处理id=11112?第二排也是空的。或者您想使所有空值都等于最近的前一个非空值(在一个id内)?Laurent的回答如下。谢谢你的回复。