Re: [程式] SAS IF/ELSE RETAIN 觀念問題
※ 引述《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
推
01/29 10:37, , 1F
01/29 10:37, 1F
→
01/29 10:39, , 2F
01/29 10:39, 2F
→
01/29 10:42, , 3F
01/29 10:42, 3F
推
01/29 11:58, , 4F
01/29 11:58, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):