作者faceoflove56 (1234567)
看板Statistics
标题[程式] SAS retain分组执行
时间Sun Mar 29 13:12:35 2015
[软体程式类别]:
SAS
[程式问题]:
资料处理
[软体熟悉度]:
低(1~3个月)
[问题叙述]:
原始资料
ID ACCEXP << Dummy r.v.
1 0
1 0
1 1
1 0
1 0
2 1
2 0
2 0
2 1
想变成
-----------table test-----------
ID ACCEXP
1 0
1 0
1 1
1 '1'
1 '1'
2 1
2 '1'
2 '1'
2 1
只要ACCEXP出现1,那麽该ID接下来的ACCEXP都要变成1
(ACCEXP是有无会计经验,原始资料是依据当年职位来判断ACCEXP是否为1
但"经验"应该是有做过就有经验,故资料需做调整)
我的想法是设变数b,如果ACCEXP=1,那b=1,
因为b会retain,接下来只要做ACCEXP=b即可
目前问题在於ID有很多笔,从遇到第一个ACCEXP=1时b就一直为1
我希望每个ID都是从0开始,遇到第一个ACCEXP再变成1(也就是一个ID做一次)
[程式范例]:
proc sort data=mylib.a;
by director_ID year;
quit;
data test;
set mylib.ceo;
retain b 0;
if ACCEXP=1 then b=ACCEXP;
by director_ID;
run;
-----------------------------------------------------------------------------
感谢~
另外想请教有无前辈做过CAR(cumulative abnormal return)
因为做CAR要抓t=-1,0,1的资料,t=-1我用LAG做,但t=1是下一笔
不知是否有方法取得下一笔资料(CAR完全无头绪>"<,感谢各位帮忙!!)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.119.143.76
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1427605958.A.2B3.html