[程式] SAS IF/ELSE RETAIN 觀念問題
又來請教板上大大.
有關data process 過程,
本覺得已經懂了. 但是有時結果仍不是我想像的.
如果可能的話, 幫我解釋這樣寫為什麼不對.
data ddd;
input id name$ vol ;
cards;
1 A 10
1 A 12
1 A 9
1 A 3
2 B 4
2 B 5
2 B 6
2 B 7
8 C 1
8 C 1
8 C 1
;
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 的使用目的是什麼? 覺得自己的觀念還是模糊的.
---------------------------------
此程式的結果 希望的結果
1 A 10 10 10
1 A 12 -999 22
1 A 9 -990 31
1 A 3 -987 34
2 B 4 4 4
2 B 5 -999 9
2 B 6 -993 15
2 B 7 -986 23
8 C 1 1 1
8 C 1 -999 2
8 C 1 -998 3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.207.72
→
01/29 00:20, , 1F
01/29 00:20, 1F
→
01/29 00:22, , 2F
01/29 00:22, 2F
→
01/29 00:24, , 3F
01/29 00:24, 3F
→
01/29 11:10, , 4F
01/29 11:10, 4F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):