作者bestdavidoff (davidoff)
看板Statistics
标题[问题] sas取lag值
时间Mon Feb 23 21:21:43 2009
请问各位一个问题:
有下列的资料:
a1 a2
1101 1
1101 2
1101 3
1102 4
1102 5
1102 6
现在取lag值 不过会出现以下的情况
a1 a2 a3
1101 1 .
1101 2 1
1101 3 2
1102 4 3
1102 5 4
1102 6 5
1103 7 6
如果要让sas依据a1判别 如果a1的代号不同则为miss值
例如下面结果:
a1 a2 a3
1101 1 .
1101 2 1
1101 3 2
1102 4 .
1102 5 4
1102 6 5
1103 7 .
刚刚有爬一下文章 先前有人碰过这个问题
我看推文 如果依照推文我应该写成如下面的程式语法:
if first . a1 then a3=.;
不过跑不出来 请问一下我该如何解决?
附上程式写法:
DATA BOOK2;
PROC SORT DATA=BOOK2;
BY A1 DESCENDING Y;
DATA BOOK3;
SET BOOK2;
Y2=LAG(F11);
IF first.A1 THEN Y3=.;
PROC PRINT DATA=BOOK3;
RUN;
上述的F11所代表的变数是要取的LAG值 令取完後的新的变项为Y2
IF的条件命令 是爬文後的想法所加进去的 不知道这样写对不对?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.23.195.24
1F:推 tew:要先依照a1排序 02/23 21:24
2F:推 tew:或者是你指令先後顺序错误 完整的写法才能除错 02/23 21:30
※ 编辑: bestdavidoff 来自: 163.23.195.24 (02/23 21:43)