我正試圖用設置的條件填充一個變量。如何在SAS中找到變量的前一個值
如果變量NUMBER等於。然後使其等於Number的前一個值。
data table2;
set table1;
prv_value = lag(number);
if number = . then number = prv_value;
run;
但是,如果在一行中有兩個值其中number =。那麼第二次出現的值就是。它是以前的數值=的值。 。
我想要的是找到第一個以前發生的數字不等於。並使數字的值等於先前的非缺失值。
我的數據的一個例子是:
id number
d10 2
d10 2
d10 3
d10 .
d10 .
應用上面的代碼,然後我會得到:
id number prv_number
d10 2 .
d10 2 2
d10 3 2
d10 3 3
d10 . .
我想的是:
id number prv_number
d10 2 .
d10 2 2
d10 3 2
d10 3 3
d10 3 .
也就是說,如果數有一個值。然後使其等於第一個以前發生的非缺失值。
在某些情況下,在我的數據集我可能有:
id number
d10 4
d10 2
d10 .
d10 .
d10 .
d10 .
和我想的是:
id number
d10 4
d10 2
d10 2
d10 2
d10 2
d10 2
(注意,我的數據是在事件/時間順序進行排序,因此想要第一次發生)。
有什麼我可以用滯後函數在不同的先前發生次數上做什麼,或者其他什麼可以做我想做的事情?
埃米爾的答案使用保留是要走的路。對於幾乎所有的情況,我都建議不要使用「滯後」函數,因爲它的語義臭名昭着,很難識別錯誤。 – 2013-04-22 16:08:40