2016-01-21 61 views
1

我有3000多個觀測值的時間序列數據集。我試圖創建一個依賴於該變量的先前值的新變量,並且我無法讓SAS計算每個觀察值,以確保先前的值在計算到下一個觀察值之前計算出來。SAS新變量基於新變量的優先值

我已經設置了第一觀察到1。然後對剩餘的觀測我想SAS來計算:

New_var =滯後(new_var)*(1 + VAR2)

任何想法?我相信這是一個相對簡單的答案,但我自己無法破譯。

回答

3

您可以嘗試保留語句而不是滯後。

retain new_var; 
new_var = new_var * (1+Var2); 
+0

重要的是要注意,輸入SET或MERGE數據集中new_var不能存在(即使丟失)。 – DomPazz

0

我有同樣的問題,並在這裏尋找它。我想出了下面的邏輯,因此想到這裏回答它,以及爲未來的SAS愛好者:

  1. 使用(或創建),它具有獨特的價值現有的(或新的)變量。你可以使用在SAS或單調()函數在PROC SQL語句保留,如下所示:

    /使用PROC SQL/ PROC SQL; 創建表temp6爲 從temp5中選擇a。*,monotonic()as var3作爲a; quit;

    /使用數據步驟/ 數據temp7; 設置temp5; retain var3; var3 + 1; 跑;

  2. 一旦你有了這個變量,你可以使用retain語句和first。標誌來計算New_Var,如下所示。我爲第一行初始化了New_Var 1。您可以相應地更改初始值。

    data temp8; 設置temp7;由var3提供的 ; 保留New_Var 1;如果first.var3則爲New_Var = New_Var *(1 + Var2); 跑;

希望這有助於!