2013-10-03 75 views
0

我對移動平均線有疑問。我使用Proc Expand(cmovave 3),但這三天可能是非連續的,我猜想。我想避免在幾天之間丟失數據,並使用相鄰日期的移動平均數。移動平均線僅適用於sas中的連續日期

有沒有什麼辦法可以做到這一點?如果我想用另一種方式說明'如何選擇我的數據集中連續時間(天)的值?'。我希望你給我一些這個問題的例子。

回答

0

使用展開以確保您具有時間序列間隔中的所有值。然後使用數據步驟來計算具有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。然後放下。