全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2778 6
2013-02-17
大家好!请教一个提取时间段的问题
具体地若干支股票在两年时间的日回报率数据集:
Stkcd      date                  return                  
000001   2005-01-01          0.01
000001   2005-01-02          0.005
.
.
.
000001   2006-12-31           0.001
000002   2005-01-01           0.0002
000002   2005-01-02          0.004
.
.
.
000002   2006-12-31           0.001
.
.

然后又知道这些股票的股改日期
Stkcd      date                                    
000001   2005-09-11         
000002   2006-01-02         
.
.
.
然后我想提取每只股票股改日期前260天到60天这200天的日回报率出来,这个该怎么操作
二维码

扫码加我 拉你入群

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

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

全部回复
2013-2-17 17:00:31
这个很简单。using SAS in financial research中专门一章讲event study的就有专门的sample code。
二维码

扫码加我 拉你入群

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

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

2013-2-17 17:14:17
用merge然后减一下。先给个能用的,没技术含量的……
___________________________________________

data a;
        input stkcd $6. +1 date yymmdd10. return;
        format date yymmdd10.;
        cards;
000001 2005-01-01 0.01
000001 2005-01-02 0.005
;

run;

data b;
        input stkcd $6. +1 cdate yymmdd10.;
        format cdate yymmdd10.;
        cards;
000001 2005-09-11
000002 2006-01-02
;
run;

proc sql;
        create table c as
        select a.stkcd as a_stkcd, b.stkcd as b_stkcd, date, return, cdate, cdate-date as day
        from a,b
        where a.stkcd = b.stkcd;
quit;

data rst;
        set c;
        if day>=60 and day<=260;
run;
____________________________________________________

求助大神
在sql的时候,
        where a.stkcd = b.stkcd and  day>=60 and day<=260 ;
这个语句不行,有没有高人有其它办法。
二维码

扫码加我 拉你入群

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

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

2013-2-17 23:24:20
scarfacetony 发表于 2013-2-17 17:14
用merge然后减一下。先给个能用的,没技术含量的……
___________________________________________
day is calculated variable; the condition day < 60 and day >=260 is one condition; so try this one

where a.stkcd = b.stkcd and (calculated day>60 and calculated day<=260) ;
二维码

扫码加我 拉你入群

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

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

2013-2-17 23:30:22
proc sql;
        create table c as
        select a.stkcd as a_stkcd, b.stkcd as b_stkcd, date, return, cdate, cdate-date as day
        from a,b
        where a.stkcd = b.stkcd and calculated day >= 60 and calculated day <= 260;
quit;


或者

proc sql;
        create table c as
        select a.stkcd as a_stkcd, b.stkcd as b_stkcd, date, return, cdate, cdate-date as day
        from a,b
        where a.stkcd = b.stkcd and cdate-date >= 60 and cdate-date <= 260;
quit;
二维码

扫码加我 拉你入群

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

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

2013-2-18 09:45:11
多谢楼上两位解答
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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