作者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