移动平均线仅连续几天

时间:2013-10-03 18:19:22

标签: sas expand proc

我对移动平均线有疑问。我使用Proc Expand(cmovave 3),但这三天我可以不连续。我希望避免在天之间丢失数据,并且仅使用相邻日期的移动平均线。

有什么方法可以做到这一点吗?如果我想以另一种方式表达“我如何选择我的数据集的一部分,其中我有连续期间(天)的值?”。我希望你能给我一些这个问题的例子。

1 个答案:

答案 0 :(得分:0)

使用Expand确保您拥有时间序列间隔中的所有值。然后使用数据步骤计算具有lagN()函数的ma3。

如果您的数据已经具有正确的时间序列间隔,则跳过PROC EXPAND步骤。

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;

我使用DUMMY变量,以便EXPAND将系列转换为WEEKDAY。然后放下它。