这个很简单,设数据集名为base,价格、日期、tp变量 分别命名为 price date tp
第一步先求五分钟内的平均价,如果交易笔数有权重,还可以假如weight子句, 比如一笔交易了 w 手
proc summary data=base nway missing;
class date tp;
var price /weight=w;
output out = base2(drop =_:) mean=;
run;
proc sort data=base2; by date tp;run;
data base3;
set base2;
by date;
retain price;
ROC=dif(price)/lag(price);
if first.date then ROC=.;
run;
另外说明一下,lag表示上一笔记录的值,dif表示当前值与上一笔观测值的差.
dif(x)=x-lag(x);
dif 和 lag的值依赖于观测进入PDV的顺序,所以一定要在前面排序
[此贴子已经被作者于2008-3-13 12:44:52编辑过]