我有一个关于移动平均线的问题。我使用Proc扩展(cmovave 3),但我认为这三天可能是不连续的。我想避免在几天之间丢失数据,而只对相邻的几天使用移动平均。
我有什么办法可以做到这一点吗?如果我想用另一种方式来表达“我如何选择我的数据集中具有连续周期(天数)的值的一部分?”我希望你能给我一些这个问题的例子。
发布于 2013-10-04 03:30:14
使用Expand确保拥有timeseries间隔中的所有值。然后使用数据步骤通过lagN()函数计算ma3。
如果您的数据已经具有正确的时间序列间隔,则跳过PROC扩展步骤。
data test;
start = "01JAN2013"d;
format date date9.
value best.;
do i=1 to 365;
r = ranuni(1);
value = rannor(1);
date = intnx('weekday',start,i);
dummy=1;
if r > .33 then output;
end;
drop i start r;
run;
proc expand data=test out=test2 to=weekday ;
id date;
var dummy;
run;
data test(drop=dummy);
merge test2 test;
by date;
ma3 = (value + lag(value) + lag2(value))/3;
run;我使用虚拟变量,以便EXPAND将系列转换为工作日。然后再把它扔掉。
https://stackoverflow.com/questions/19166351
复制相似问题