作者west1996 ()
看板Statistics
標題Re: [程式] SAS資料補齊
時間Thu Nov 28 01:16:28 2019
※ 引述《ss849101 ()》之銘言:
: [程式]:
: SAS
: [軟體程式類別]:
: SAS9.4
: [程式問題]:
: 想使第一筆缺漏值為0且使用先前的資料補齊之後的缺漏值。
: [軟體熟悉度]:
: 新手
: [問題敘述]:
: 在資料中遇到一些資料是三個月或是一年出現一次,但我處理資料的頻率是一個月一次,
: 例如:3月有資料,可是四、五月沒有,我想要利用三月的資料覆蓋到四、五月去。
: 另外我的樣本期間中第一筆資料是缺漏的,我希望它可以是0。
: 試了許多方法都無法執行,請各位前輩指點,謝謝。
: [程式範例]:
: 這是我的資料,其中EPS等資料是三個月或是一年一期,price等是每個月都有,
: 我想要把EPS那些資料弄成每個月都是,
: 例如: 31JAN1989 後的 EPS 和 29DEC1988 的 EPS 一樣都是3.55至28DEC1989為止
: https://i.imgur.com/J4mToNJ.png
: 然後 29JAN1988 的EPS沒有資料,我想讓他為0,
: 以下是我所做的嘗試,但是無法完成我的目的。
: https://i.imgur.com/yKpISl0.png
: 如果第一筆資料都有了之後我要讓EPS都跟著前一筆資料,所以我想用Array的方式
: 方式一:
: https://i.imgur.com/SVsPVhO.png
: 方式二(開巨集讓他執行):
: https://i.imgur.com/DzwPIgP.png
: 我的程式一定是出問題了,不然就是我邏輯不對,
: 總之我卡住了,希望各位前輩願意指點。
盲打,希望沒打錯...
data new;
set old;
by code;
retain eps_now;
if first.code = 1 then eps_now = 0;
if eps = . then eps = eps_now;
else eps_now = eps;
drop eps_now;
run;
上面的code是假設只有esp欄位要做處理,如果其他欄位也要這樣處理的話
那又是另一個故事了XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.11.8.26 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Statistics/M.1574874991.A.EC4.html
※ 編輯: west1996 (39.11.8.26 臺灣), 11/28/2019 02:11:32
1F:推 ss849101: 真的可以耶!你太厲害了 11/28 12:22
2F:→ ss849101: 謝謝! 11/28 12:22