Последний не отсутствующий индекс var в массиве - SAS - PullRequest
0 голосов
/ 18 сентября 2018

Есть ли способ найти индекс последнего не пропущенного var в массиве? Например:

data a;
array a(4) a1 - a5;
a1=1 ;a3=2;
run;

Я хочу иметь возможность определить в своем коде, что a3 является последним ненулевым var. Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Если вы определите свой массив в обратном порядке, вы можете сделать это, используя coalesce + whichn:

data a;
array a(5) a5 - a1;
a1=1 ;a3=2;
want = whichn(coalesce(of a[*]), of a[*]);
run;
0 голосов
/ 18 сентября 2018

Попробуйте: это дает положение в диапазоне последней непропущенной переменной.Переходите от последнего к первому элементу массива, проверяйте, не пропал ли он.Сохранить позицию и выйти из цикла, если он не пропал.

data a;
    array a(*) a1 - a5;
    a1=1 ;a3=2;
    do i=dim(a) to 1 by -1;
        if not missing(a{i}) then do;
            Last_not_missing=i;
            leave;
        end;
    end;
    drop i;
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...