楼主: cz851218
3506 8

如何实现时间数据的连续 [推广有奖]

  • 0关注
  • 5粉丝

博士生

44%

还不是VIP/贵宾

-

威望
0
论坛币
215 个
通用积分
0
学术水平
3 点
热心指数
4 点
信用等级
3 点
经验
4780 点
帖子
332
精华
0
在线时间
233 小时
注册时间
2008-10-30
最后登录
2016-11-23

楼主
cz851218 发表于 2010-4-16 12:28:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
假设现在有一列股票收盘价数据和其对应的时间序列,时间序列的格式是.01jan2007这样的(其中数据很多),现在对该序列做了一些处理(比如对收益率的筛选等),使得这些时间序列里面有些日期不连续,现在的问题是要找出日期连续的序列,并且日期连续的标准是至少要有4个连续的天数。如何用SAS编程做!有高手可以赐教吗?
二维码

扫码加我 拉你入群

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

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

关键词:如何实现 SAS编程 时间序列 Jan 收盘价 数据 时间

回帖推荐

soporaeternus 发表于4楼  查看完整内容

没认真测,貌似是对的 如果需要按交易日来识别连续日期,那么一开始用一张交易日表 结构为key+trading_date 其中key为连续自然数 用key替换i就可以了

本帖被以下文库推荐

沙发
crackman 发表于 2010-4-16 14:16:15
你这个连续四天以上的序列
是针对某一种收益率吗?
还是什么意思呢

藤椅
nkwilling 发表于 2010-4-16 14:21:58
在问问题的时候最好有个sample,别人也好给你解答,全部是文字别人怎么回答?

板凳
soporaeternus 发表于 2010-4-16 15:15:29
  1. data a;
  2.         do i="01Jan2010"d to "20Jan2010"d by 1;
  3.                 if i^="02Jan2010"d and i^="04Jan2010"d and i^="10Jan2010"d and i^="17Jan2010"d then output;
  4.         end;
  5.         format i yymmdd10.;
  6. run;

  7. proc sort data=a;
  8.         by i;
  9. run;
  10. quit;

  11. data b;
  12.         retain j grp cnt;
  13.         set a;
  14.         by i;
  15.         if _N_=1 then do;
  16.                 j=i;
  17.                 grp=0;
  18.                 cnt=1;
  19.         end;
  20.         else do;
  21.                 if i-j=1 then do;
  22.                         cnt+1;
  23.                 end;
  24.                 else do;
  25.                         grp+1;
  26.                         cnt=1;
  27.                 end;
  28.                 j=i;
  29.         end;
  30. drop j;

  31. run;

  32. proc sql;
  33.         create table c as
  34.                 select
  35.                  a.i
  36.                  from b a
  37.                  inner join (select grp,max(cnt) as max from b group by grp having max>=4) b
  38.                  on a.grp=b.grp
  39.         ;
  40. quit;
复制代码
没认真测,貌似是对的
如果需要按交易日来识别连续日期,那么一开始用一张交易日表
结构为key+trading_date 其中key为连续自然数
用key替换i就可以了
已有 2 人评分经验 论坛币 学术水平 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
crackman + 100 + 1 + 1 精彩帖子

总评分: 经验 + 103  论坛币 + 3  学术水平 + 1  热心指数 + 1   查看全部评分

Let them be hard, but never unjust

报纸
crackman 发表于 2010-4-16 16:01:08
4# soporaeternus
兄弟 写的很不错

地板
cz851218 发表于 2010-4-16 17:12:42
非常感谢......

题目的实际意思是这样的:期货铜从2007年5月到至今的小时交易数据表(其中包括:日期,时间,MDI值,MA值五个变量),其中一天包括5个时间(9点.10点.11点.13点.14点),现在仅仅是对MDI和MA值进行了比较,得到一个新的数列delta,现在要把delta中大于0的数据给删除掉,同时在得到的序列中要保证连续日期的次数至少达到4个,假设得到一个样本中有这样的结果:.......(前面序列是连续的)28dec2000 、 01jan2001 02jan2001、 03jan2001 、07jan2001、 08jan2001 、09jan2001 、 10jan2001 、 11jan2001(后面序列也是连续的),那么对这样一个样本来说,仅仅需要以下数据:.......(前面序列是连续的)28dec2000、  07jan2001、 08jan2001、 09jan2001  、10jan2001  、11jan2001(后面序列也是连续)。

7
cz851218 发表于 2010-4-17 10:12:38
问题就是遇到双休日或者节假日的情况不好处理。

8
soporaeternus 发表于 2010-4-17 12:33:18
对于有效交易日的筛选最可行的方法就是用一张交易日表
以前做类似项目就是这样做的
Let them be hard, but never unjust

9
cz851218 发表于 2010-4-17 13:45:41
恩,其实我的想法就是想生成一张只含交易日的时间表出来,然后和原始的数据表进行匹配,如果缺失数列之间的非缺失数据列达到一个给定的数,就认为在这段时间截取的数据为连续。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-5 18:52