[程式] SAS retain分組執行

看板Statistics作者 (1234567)時間9年前 (2015/03/29 13:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
[軟體程式類別]: 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
文章代碼(AID): #1L5ud6Ap (Statistics)
文章代碼(AID): #1L5ud6Ap (Statistics)