D*******a 发帖数: 286 | 1 我有一组数据如下,因第二第三条记录的id缺省,想换成和第一条记录的id,我用lag
但是不行,那位高手能帮,谢了
data aa;
input id @3 vod mmddyy10. result $;
if id=. then id=lag1(id);
datalines;
1 08/11/2000 normal
. 09/23/2001 normal
. 03/01/2002 abnormal
2 05/21/2000 normal
. 04/22/2001 normal
. 11/12/2001 normal
;
run; |
k*******a 发帖数: 772 | 2 这种情况叫 last observation carry forward, 最好不要用lag改用retain
data aa;
retain lagid;
input id @3 vod mmddyy10. result $;
if id=. then id=lagid;
else lagid=id;
drop lagid;
datalines;
1 08/11/2000 normal
. 09/23/2001 normal
. 03/01/2002 abnormal
2 05/21/2000 normal
. 04/22/2001 normal
. 11/12/2001 normal
;
run; |
s******a 发帖数: 13 | 3 data aa1;
set aa;
retain temp;
if id^=. then temp=id;
id=temp;
run; |
D*******a 发帖数: 286 | 4 谢谢。问题是,如果我的数据很大,变量很多,我用proc import来导入数据的话,我
是不是要另外建一个数据,如,
data bb;
set aa;
....
还是在proc import 步骤里就可以改了? |
D*******a 发帖数: 286 | 5 可以啦,谢谢!
【在 s******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : data aa1; : set aa; : retain temp; : if id^=. then temp=id; : id=temp; : run;
|