有誰知道如何使用SAS中的滯後,只考慮變量的最後已知數字,而不是缺少值,即不是「。」。按照以下順序:9,10,8,...,7?SAS滯後排除缺失值?
data have;
input val;
datalines;
9
10
8
.
7
;
run;
我想的表包含下列:
val want_val
9 9
10 10
8 8
. 8
7 7
有誰知道如何使用SAS中的滯後,只考慮變量的最後已知數字,而不是缺少值,即不是「。」。按照以下順序:9,10,8,...,7?SAS滯後排除缺失值?
data have;
input val;
datalines;
9
10
8
.
7
;
run;
我想的表包含下列:
val want_val
9 9
10 10
8 8
. 8
7 7
使用條件邏輯,而不是直接滯後功能。
創建另一個變量發生滯後功能僅當值不缺少創建一個滯後變量。
data have;
input y;
cards;
9
10
8
.
7
;
data want;
set have;
retain x_lag;
x=lag(y);
if x ne . then x_lag=x;
run;
proc print data=want;
var y x_lag;
run;
OUTPUT:
Obs y x_lag
1 9 .
2 10 9
3 8 10
4 . 8
5 7 8
這不是SAS編程問題,而是一個關於如何使用SAS過程來轉換數據的問題。我建議你在community.sas.com上發佈非編程問題。作爲一個開始的好地方,請看PROC EXPAND和可能的轉換選項。這將允許你實現你的目標。 –
這讀起來像一個編程問題的開始。建議您提供樣本數據,並描述您想要的輸出數據。同時顯示您嘗試過的任何代碼,以及爲什麼它不起作用。聽起來好像你正在試圖做「最後的觀察結果」而不是簡單的滯後。 Google搜索SAS LOCF可以幫助創意。 – Quentin
我不明白這不是一個編程問題......它不是很詳細,但它可能比這裏的一半問題要好。 – Joe