作者west1996 (焦了六年变脆了)
看板Statistics
标题Re: [程式] SAS 前後期比较
时间Sun Dec 6 17:59:55 2009
retain temp flag;
if _n_=1 then do; temp=p; flag=0; t=-1; end;
else if flag=0 then do;
if p=temp then t=-1;
else do;
flag=1;
if p>temp then t=1; else t=0;
temp=p;
end;
end;
else do;
if p>temp then t=1; else t=0;
temp=p;
end;
run;
※ 引述《RequiemInDm (安魂曲)》之铭言:
: : 依照t大写法
: : Obs P t
: : 1 2 -1
: : 2 2 -1
: : 3 2 -1
: : 4 5 1
: : 5 1 0
: : 6 3 1
: : 7 2 -1
: : 8 3 1
: : 第7项就会被判断成-1 而不是0 想问一下 有可以选择从P的哪个资料点开始做判断
: : 的方法嘛? 感谢回答
: 以下是我自己写出问题要的答案 (感谢k大跟t大之前推文),
: 只是我在想应该有更简洁方式写法才是, 因为用c语言写判断式似乎不需要用那麽多!
: retain d 0 n 0;
: lagp = lag(p);
: lag2p = lag2(p);
: if _n_ =1 then d = p;
: if (p = d ) then do;
: if n =0 then t = .;
: else goto pp;
: end;
: pp:
: else do;
: n+1;
: if p > lagp then t=1;
: else if p = lag2p then do;
: if lagp > lag2p then t =1;
: else t =0;
: end;
: else t =0;
: end;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.114.180
1F:推 RequiemInDm:感谢感谢!!不会用到lag会比较快!! 感谢分享 12/06 22:36
2F:推 RequiemInDm:不过这里只考虑到落後一期, 要落後两期可能还要改写 12/06 22:45
3F:→ RequiemInDm:还是很感谢 12/06 22:45
4F:→ west1996:落後两期就多塞一个temp2然後判断逻辑修一下就好了 12/06 23:11
5F:→ RequiemInDm:是呀 我了解!!哈 感谢我已经修好了 12/06 23:19