看板 Statistics 關於我們 聯絡資訊
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
RequiemInDm:感謝感謝!!不會用到lag會比較快!! 感謝分享 12/06 22:36
RequiemInDm:不過這裡只考慮到落後一期, 要落後兩期可能還要改寫 12/06 22:45
RequiemInDm:還是很感謝 12/06 22:45
west1996:落後兩期就多塞一個temp2然後判斷邏輯修一下就好了 12/06 23:11
RequiemInDm:是呀 我了解!!哈 感謝我已經修好了 12/06 23:19