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