2017-10-09 89 views
0

我試圖弄清楚這一點。我有一個表如下,我想填充的最後一個非零值的變量名的最後一列(如最後一列所示):SAS:獲取最後一個非零觀察值的變量名稱

ID MTH_1 MTH_2 MTH_3 MTH_4 MTH_5 MONTH_LAST_BALANCE 
-------------------------------------------------------------- 
1 10  0  10  20  10  MTH_5 
2 5  10  15  5  0  MTH_4 
3 5  10  5  0  0  MTH_3 
4 1  2  3  1  0  MTH_4 
5 1  0  0  0  0  MTH_1 

我猜我需要使用某種陣列,使這項工作,但我不知道。根據第1行,我只需要上一個非零值,而不是其他一些代碼似乎檢索的最左邊的值。

任何幫助將非常appreicated。

乾杯

回答

2
 
data want ; 
    set have ; 

    /* Load MTH_1 to MTH_5 into array */ 
    array m{*} MTH_1-MTH_5 ; 

    length MONTH_LAST_BALANCE $5. ; 

    /* Iterate over array */ 
    do i = 1 to dim(m) ; 
    /* Use vname function to get variable name from array element */ 
    if m{i} > 0 then MONTH_LAST_BALANCE = vname(m{i}) ; 
    end ; 
run ; 
+0

它的工作!非常感謝你的幫助 :) – iain