全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1769 3
2012-07-22
proc sort data=ashr.asharemr out=mr;by stkcd trdmnt;run;

data ashr.mr;
set mr;
by stkcd;
lagretn=0;
do i=1 to 11;
lagretn+mretnd;
if last.stkcd then leave;
end;
averetn=lagretn/11;
keep stkcd trdmnt lagretn averetn mretnd mretwd i;
where trdmnt>=200010;
run;

无法做到当距last.stkcd少于11个值时,就应该停止计算均值,而不是直到last.stkcd才停止。该如何修改呢?
(数据形式见下一贴)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-7-22 11:39:49
stkcd   trdmnt         retn               11-month_ave
1         200010        0.002             第一支股票从该月起11个月的平均回报率
1         200011        -0.003            第一支股票从该月起11个月的平均回报率
1         200012
1         200101
1
1
1
2        200010                               第二支股票从该月起11个月的平均回报率
2        200011
2        200012
2
3                                                   第三支股票从该月起11个月的平均回报率
3
3
3
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-22 11:50:02
而且计算得到的均值也不正确。

请高手帮编下程序!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-22 16:03:15
问题已解决!
移动平均问题,the trick is 运用LAG 创建新变量.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群