楼主: gxa1
3066 2

求助:怎么计算某天距离最近复牌时间的天数? [推广有奖]

  • 2关注
  • 0粉丝

副教授

46%

还不是VIP/贵宾

-

威望
0
论坛币
416 个
通用积分
8.5500
学术水平
3 点
热心指数
5 点
信用等级
3 点
经验
38068 点
帖子
359
精华
0
在线时间
1312 小时
注册时间
2009-3-27
最后登录
2024-4-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
QQ截图20111007103147.png id是交易天数。例如,想要的结果是:79距离86为7天,80距离86为6天;90距离95为5天,93距离95为3天。
附件是简化的数据集(论坛不给传sas格式,所以给的是excel格式),实际有N多股票,所以, tt.xls (17.5 KB)

不能手工填写。求高手帮帮忙

二维码

扫码加我 拉你入群

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

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

关键词:Excel格式 EXCEL exce xcel 数据集 excel 手工

沙发
hongxx 发表于 2011-10-7 17:50:56 |只看作者 |坛友微信交流群
  1. proc import datafile='f:\tt.xls' dbms=excel
  2.         out=tt replace ;
  3.         getnames=yes;
  4. run;
  5. data tt_resume;
  6.         set tt;
  7.         lag_nprice=lag(nprice);
  8.         if first.stkcd then lag_nprice=nprice;
  9.         if lag_nprice=. and nprice^=. then output;
  10.         by stkcd;
  11.         drop lag_nprice;
  12. run;
  13. data tt_resume2;
  14.         set tt_resume;
  15.         lastresume_id=lag(id);
  16.         if first.stkcd then lastresume_id=1;
  17.         by stkcd;
  18.         rename id=resume_id;
  19.         attrib _all_ label='';
  20. run;
  21. proc sql;
  22.         create table tt_final as
  23.         select one.*, resume_id , two.nprice as resume_price, resume_id-one.id as distance_resume
  24.         from tt as one  left join tt_resume2 as two
  25.         on one.stkcd=two.stkcd and lastresume_id<=one.id<resume_id
  26.         order by stkcd,id;
  27. quit;
复制代码
先把复牌日期输出成一个数据集tt_resume2,然后sql 查询,把id 和复牌日期 resume_id做相减即可。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
gxa1 + 1 + 1 + 1 热心帮助其他会员

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

使用道具

藤椅
gxa1 发表于 2011-10-7 18:36:43 |只看作者 |坛友微信交流群
hongxx真是牛人,非常感谢!帮我解决了一个大问题!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 16:23