我正在计算金融时间序列数据的一些间隔统计信息(例如一分钟间隔的标准偏差)。我的代码设法为包含数据的所有间隔获取结果,但对于不包含时间序列中任何观察的间隔,我想插入一个空行以保持时间戳的一致性。
例如,如果在 10:00 到 10:01、10:02 到 10:03 之间有数据,但不是 10:01 到 10:02,我的输出将是:
10:01 stat1 stat2 stat3
10:03 stat1 stat2 stat3
如果结果可能是理想的(我希望一些值为0,一些缺少'。'):
10:01 stat1 stat2 stat3
10:02 0 0 .
10:03 stat1 stat2 stat3
我做了什么:
data v_temp/view = v_temp;
set &taq_ds;
where TIME_M between &start_time and &end_time;
INTV = hms(00, ceil(TIME_M/'00:01:00't),00); *create one minute interval;
format INTV tod.; *format hh:mm:ss;
run;
proc means data = sorted noprint;
by SYM_ROOT DATE INTV;
var PRICE;
weight SIZE;
output
out=oneMinStats(drop=_TYPE_ _FREQ_)
n=NTRADES mean=VWAP sumwgt=SUMSHS max=HI min=LO std=SIGMAPRC
idgroup(max(TIME_M) last out(price size ex time_m)=LASTTRD LASTSIZE LASTEX LASTTIME);
run;
对于一些不活跃的股票,有很多这样的缺口。生成这些填充行的有效方法是什么?