0

我有一个关于移动平均线的问题。我使用 Proc Expand (cmovave 3),但我想这三天可能是非连续的。我想避免几天之间丢失数据,并仅在相邻的日子使用移动平均线。

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

4

1 回答 1

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。然后放下它。

于 2013-10-03T19:30:14.433 回答