看板 Statistics 關於我們 聯絡資訊
又來請教板上大大. 有關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
majora:試著先在一個data step 把lag(id)存成另一個variable 01/29 00:20
majora:這樣在用你的邏輯,就會對了!! 你可以用PDV來看為什麼錯 01/29 00:22
majora:每一個if後面 put _all_ 會幫助你看到data step是怎麼運作 01/29 00:24
bbearh:有指令可以show當時的 pdv嗎? THANKS 01/29 11:10