作者MmmRrrrX (銀色的靈魂)
站內Statistics
標題Re: [程式] SAS IF/ELSE RETAIN 觀念問題
時間Sun Jan 29 00:57:45 2012
※ 引述《bbearh (go)》之銘言:
: 又來請教板上大大.
: 有關data process 過程,
: 本覺得已經懂了. 但是有時結果仍不是我想像的.
: 如果可能的話, 幫我解釋這樣寫為什麼不對.
: run;
: *算分組累積和;
: data eee;
: set ddd;
: retain acc 0;
: * acc=-10000;
: if id^=lag(id) then do;
: acc=vol;
: end;
: else if id=lag(id) then
: acc=acc+vol;
: else
: acc=-999; <--- 第2 row 為何會跑到這case
: run;
: * if else then do end 這樣寫沒錯吧! 已被data弄得沒什麼信心
: * retain 的使用目的是什麼? 覺得自己的觀念還是模糊的.
這裡用 if then ; else if then ; else ; 有點詭異
這樣代表有三種以上的可能
不過 id 要嘛等於 lag(id) 要嘛不等於
只需要 if then ; else ; 即可
另外提供另一種得到相同結果的寫法給你參考
data eee;
set ddd;
by id;
retain acc ;
if first.id then acc=vol;
else acc=acc+vol;
run;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.235.230.125
1F:推 bbearh:用3 個if else 只是想看看到底跑到那個case, 結果真的跑到 01/29 10:37
2F:→ bbearh:到那個不可能的case. 讓我更不明白了. 01/29 10:39
3F:→ bbearh:分人分組用first.id 是種簡潔明瞭的寫法...(筆記) THANKS 01/29 10:42
4F:推 tew:sort by id ;記得要先排序 01/29 11:58