[程式] SAS retain分組執行
[軟體程式類別]:
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://www.ptt.cc/bbs/Statistics/M.1427605958.A.2B3.html
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):