楼主: tanshiyu
2829 6

SAS提取时间段的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

65%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
124 点
帖子
13
精华
0
在线时间
43 小时
注册时间
2012-11-24
最后登录
2015-4-23

楼主
tanshiyu 发表于 2013-2-17 16:55:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好!请教一个提取时间段的问题
具体地若干支股票在两年时间的日回报率数据集:
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天的日回报率出来,这个该怎么操作
二维码

扫码加我 拉你入群

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

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

关键词:时间段 RETURN stkcd date 怎么操作 return 时间段

沙发
nectar 发表于 2013-2-17 17:00:31
这个很简单。using SAS in financial research中专门一章讲event study的就有专门的sample code。

藤椅
scarfacetony 发表于 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 ;
这个语句不行,有没有高人有其它办法。
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

板凳
yongyitian 发表于 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) ;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
scarfacetony + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
tangliang0905 发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
scarfacetony + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
scarfacetony 发表于 2013-2-18 09:45:11
多谢楼上两位解答
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

7
bobguy 发表于 2013-2-18 11:44:56
nectar 发表于 2013-2-17 17:00
这个很简单。using SAS in financial research中专门一章讲event study的就有专门的sample code。
Here is a simple example.

data stock;
  do id=1 to 2;
     do date='1jan2010'd  to '1jan2012'd;
            return=ranuni(123)*0.01;
         output;
  end;
  end;
format date date9.;
run;

data stock_need;
  id=1; cdate='1jun2011'd; output;
  id=2; cdate='15apr2011'd; output;
  format cdate date9.;
  run;

proc sql;
   create table needed as
   select a.*, b.cdate, a.date-b.cdate as diff_days
   from stock a,
        stock_need b
  where a.id=b.id and
     ( b.cdate - a.date<=200 and  a.date - b.cdate<=60)
         ;
         quit;

proc print;run;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 15:01