作者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/cn.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