sausau 发表于 2010-3-5 02:27 
比如 需要知道 2010年2月3号 前,后10个交易日的数据(日期是不连续的),就是前后10个obs, 怎么从一堆数据里面把这21天数据提出来啊?
如果生成一个变量叫 edate,把2月3号的值设置为0,那么2月2号应该是-1,2月1号是-2,1月29号是-3,诸如此类,一直算到-10;2月4号为1,一直推到10。 数据里面都是交易日的数据。
本来想用count ,结果完全不知道怎么写程序。
希望最后能出来的结果是这样的, 就是要把edate 那列做出来。我的能力就只能把0 那个做出来,倒着数和正着数都完全迷茫……
OBS DATE EDATE RET
1 -10
2 -9
3 -8
……
11 0
……
21 10
谢谢在此活动的牛人们!!!
This one is more efficient. If your data contain weekend obs, you can modify it on the condition of week days.
data tmp2;
set tmp;
week2=intnx('week', '01MAR2010'd,2)+1;
week_2=intnx('week', '01MAR2010'd,-2)+1;
if week_2<=date<=week2 then output;
drop week:;
run;