全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1902 4
2013-02-28
这是一个关于波动率均值的数据,每周算出来一个平均的波动率,比如20020102、20020103、20020104这三天是这一周的所有数据,取了平均值。现在有个让我想了一下午的事情,我改怎么把20020102、20020103、20020104这一周的波动率数据换到20020107、20020108、20020109、20020110、20020111这一周的数据里面去,后面以此类推。等于就是把数据按周来下移的问题。大部分周都是5个数据,但是有少数周里面是3、4个数据,所以这就比较麻烦了。我估计还是要用到week什么的命令,但是我不知道该怎么做了。。求高手们指点指点。。。谢谢了!
附件里是全部数据,后面还贴了部分数据。。


vol.xlsx
大小:(35.48 KB)

 马上下载



2002/1/2

0.7789

2002/1/3

0.7789

2002/1/4

0.7789

2002/1/7

0.6923

2002/1/8

0.6923

2002/1/9

0.6923

2002/1/10

0.6923

2002/1/11

0.6923

2002/1/14

0.5819

2002/1/15

0.5819

2002/1/16

0.5819

2002/1/17

0.5819

2002/1/18

0.5819

2002/1/22

0.5932

2002/1/23

0.5932

2002/1/24

0.5932

2002/1/25

0.5932

2002/1/28

1.1761

2002/1/29

1.1761

2002/1/30

1.1761

2002/1/31

1.1761

2002/2/1

1.1761

2002/2/4

1.5426

2002/2/5

1.5426

2002/2/6

1.5426

2002/2/7

1.5426

2002/2/8

1.5426

2002/2/11

0.6661

2002/2/12

0.6661

2002/2/13

0.6661

2002/2/14

0.6661

2002/2/15

0.6661

2002/2/19

1.3232

2002/2/20

1.3232

2002/2/21

1.3232

2002/2/22

1.3232


附件列表

return.xls

大小:171 KB

 马上下载

二维码

扫码加我 拉你入群

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

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

全部回复
2013-2-28 19:33:21
仍然沿用一下我原来给你写的程序

proc import datafile="F:return.xls" out=a replace;
run;

data b;
format date yymmdd10.;
set a;
date=input(put(dateindex,8.),anydtdte.);
week=year(date)||"-"||left(week(date));
run;

proc sql;
create table c as
select week,date, mean(ret_cc) as mean from b
group by week;
quit;

data d;
set c;
retain tem;
y=lag(mean);
if first.week then tem=y;
y=tem;
drop tem;
by week notsorted;
run;
二维码

扫码加我 拉你入群

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

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

2013-2-28 19:43:47
Imasasor 发表于 2013-2-28 19:33
仍然沿用一下我原来给你写的程序

proc import datafile="F:return.xls" out=a replace;
谢谢斑竹!不过运行后出来的d数据中提示有0个obs。。。
二维码

扫码加我 拉你入群

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

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

2013-2-28 19:47:36
Imasasor 发表于 2013-2-28 19:33
仍然沿用一下我原来给你写的程序

proc import datafile="F:return.xls" out=a replace;
谢谢版生!我弄错啦。。。是对的。。斑竹你太强大了。大谢!!!
斑竹你在群里叫什么?
二维码

扫码加我 拉你入群

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

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

2013-3-1 07:54:11
You can use a trick int((date-2)/7) to build a week key. This will be continuous cross years and will be correct in values when you have missing values. The left problem would be easy.

libname s excel 'c:\temp\vol.xlsx' access=readonly;


proc print data=s."sheet1$"n;
run;

data temp;
  set s."sheet1$"n (rename=(__2_2002=date    __7789=return));
  week=int((date-2)/7);
run;

proc print;run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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