SAS proc timeseries:在指定的时间间隔内聚合
SAS proc timeseries: aggregate over a specified intervale
我想使用 PROC TIMESERIES 聚合指定时间间隔内的数据。特别是,我想在 60 秒内聚合 window,从一分钟内的 30 秒开始。
我试过以下代码:
proc timeseries data=test out= test_30shift;
id datetime interval=sec60 accumulate=first setmissing=missing align=middle start = '18apr1997.00:05:30'dt end = '19apr1997.00:00:30'dt;
变量出价;
运行;
我也尝试过使用 ALIGN=BEGINNING。
结果类似于以下代码:
proc timeseries data=test out= test_noshift;
id datetime interval=sec60 accumulate=first setmissing=missing align=beg start = '18apr1997.00:05:00'dt end = '19apr1997.00:00'dt;
var bid;
run;
如何在我想要的开始的时间间隔内实现聚合?
你所拥有的已经很接近了。您需要制作 interval=sec60.31
.
data test;
format dt datetime19.;
do dt = "01JAN2015:00:00:00"dt to "02JAN2015:00:00:00"dt;
x = rannor(123);
output;
end;
run;
proc timeseries data=test out=test2;
id dt interval=sec60.31 accumulate=first align=beginning;
var x;
run;
0 - 59 的中点在 29 秒,因此我们必须移动 31 秒才能从 MM:30 开始。
我想使用 PROC TIMESERIES 聚合指定时间间隔内的数据。特别是,我想在 60 秒内聚合 window,从一分钟内的 30 秒开始。
我试过以下代码:
proc timeseries data=test out= test_30shift;
id datetime interval=sec60 accumulate=first setmissing=missing align=middle start = '18apr1997.00:05:30'dt end = '19apr1997.00:00:30'dt;
变量出价; 运行;
我也尝试过使用 ALIGN=BEGINNING。
结果类似于以下代码:
proc timeseries data=test out= test_noshift;
id datetime interval=sec60 accumulate=first setmissing=missing align=beg start = '18apr1997.00:05:00'dt end = '19apr1997.00:00'dt;
var bid;
run;
如何在我想要的开始的时间间隔内实现聚合?
你所拥有的已经很接近了。您需要制作 interval=sec60.31
.
data test;
format dt datetime19.;
do dt = "01JAN2015:00:00:00"dt to "02JAN2015:00:00:00"dt;
x = rannor(123);
output;
end;
run;
proc timeseries data=test out=test2;
id dt interval=sec60.31 accumulate=first align=beginning;
var x;
run;
0 - 59 的中点在 29 秒,因此我们必须移动 31 秒才能从 MM:30 开始。