楼主: creste
1671 4

请教,急 [推广有奖]

  • 1关注
  • 1粉丝

已卖:4097份资源

副教授

13%

还不是VIP/贵宾

-

威望
0
论坛币
9588 个
通用积分
249.2695
学术水平
19 点
热心指数
22 点
信用等级
16 点
经验
4724 点
帖子
96
精华
0
在线时间
1243 小时
注册时间
2008-6-20
最后登录
2025-12-28

楼主
creste 发表于 2012-12-23 09:37:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的数据是这样的:
date                 return      accper
2007.4.26            1           2007.3.31
2007.5.8             1.8      
  
2007.5.9              0.6

2007.5.10            1.2

2007.5.11             0.9
.
.
.
2007.8.17             2.1      2007.6.30
2007.8.18             1.1

2007.8.19             2

2007.8.20            1.8

2007.8.21             2.1
.
.
.
我想选取每个公告日(即accper不是缺失的那一天)之后三个交易日的收益总和,请问怎么用SAS实现?多谢多谢!
注:由于在时间上并不一定是顺延的三天,所以不能用日期来实现,应该选的是公告日后三个观测。(无accper表示没有,因为公告日只有一天)






二维码

扫码加我 拉你入群

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

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

关键词:RETURN CCPER ACCP date turn return 交易日 公告 收益

沙发
明明2011 发表于 2012-12-23 10:45:45
有难度!

藤椅
可~乐 发表于 2012-12-23 12:19:52
试试以下,虽然写得繁琐了些,不过可以实现。。。
  1. data test1;
  2. length date1 $20. accper1 $20.;
  3. input date1 return accper1 ;
  4. date=mdy(scan(date1,2,"."),scan(date1,3,"."),scan(date1,1,"."));
  5. accper=mdy(scan(accper1,2,"."),scan(accper1,3,"."),scan(accper1,1,"."));
  6. drop  date1  accper1;
  7. format date yymmdd10.  accper yymmdd10.;
  8. cards;
  9. 2007.4.26 1 2007.3.31
  10. 2007.5.8 1.8 .
  11. 2007.5.9  0.6 .
  12. 2007.5.10 1.2 .
  13. 2007.8.17 2.1 2007.6.30
  14. 2007.8.18 1.1 .
  15. 2007.8.19 2 .
  16. 2007.8.20 1.8 .
  17. 2007.8.21 2.1 .
  18. ;
  19. run;

  20. proc sort data=test1;
  21.         by         date  accper ;
  22. run;

  23. data test2;
  24.         set test1;
  25.         where accper^=.;
  26.         group+1;
  27. run;

  28. data test3;
  29.         merge test1 test2;
  30.         by date;
  31.         retain new_group;
  32.         if group^=. then  new_group= group;
  33.         drop group;
  34. run;

  35. data test4;
  36.         set test3;
  37.         by new_group;
  38.         if first.new_group then nbr=1;
  39.         else nbr+1;
  40.         if 1<nbr<5;
  41. run;

  42. proc means data=test4 nway nmiss noprint;
  43.         var return;
  44.         class new_group;
  45.         output out=test5(drop=_:) mean=mean_return;
  46. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
数据分析师3K + 40 + 1 + 1 + 1 热心帮助其他会员

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

板凳
creste 发表于 2012-12-23 16:33:32
可~乐 发表于 2012-12-23 12:19
试试以下,虽然写得繁琐了些,不过可以实现。。。
那个group是什么?系统自动生成的吗?

报纸
可~乐 发表于 2012-12-23 22:40:33
creste 发表于 2012-12-23 16:33
那个group是什么?系统自动生成的吗?
它是一个标志,标记是第几次公告,自己给它算的。。。

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

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