SAS:获取最后一次非零观察的变量名称

时间:2017-10-09 11:13:12

标签: 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行,我只需要 last 非零值,而不是其他一些代码似乎要检索的最左边的值。

任何帮助都会很有用。

干杯

1 个答案:

答案 0 :(得分: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 ;