全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1803 4
2010-04-23
数据表new中有如下几个变量:
stkcd(股票代码,升序),price(收盘价格),date(日期,descending排序)。基本是两年的A股日数据。
我想做一个这样的程序,加上一个新的变量price30——30天后的股票收盘价,并计算期间的收益率。从第一条记录开始,先判断指针向后29个记录的stkcd,是否相同,如果相同则将这个第30条记录的price赋值给第一条记录的新变量price30。
我先编的是这样的程序:

data a.new1;
set a.new;
if lag29(stkcd)=stkcd then
do;
price30=lag29(price);
ret30=log(price30/price);
end;
run;

但是这样做出来的新数据集的滞后项不是通过new数据集定位的,而是从new1中定位的,一直没解决这个问题。所以想请教一下大家,请问如何才能够从new中做判断并且定位滞后项呢?先谢谢各位了。
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-23 12:02:25
这个真不知道啊
二维码

扫码加我 拉你入群

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

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

2010-4-23 12:28:30
看样子两年的数据量不大,可以直接自联接以下
proc sql;
create table tb_fnl as select
a.*
from tb_src as a left join (select * from tb_src) as b
        on a.stkcd=b.stkcd and sum(b.date,-a.date)=29;
quit;
二维码

扫码加我 拉你入群

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

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

2010-4-23 13:54:06
看看统计的相关书籍
二维码

扫码加我 拉你入群

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

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

2010-4-23 23:51:11
3# yzzhang

我的数据其实不只是两年的,只是拿两年的做个例子,现在想了一个比较麻烦的方法绕过这个问题了,但是还是想搞清楚,到底怎么才能把lag操作指向最初的表格而不是新建后的表格呢...
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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