Чтобы найти имя переменной, вы можете использовать функцию VNAME()
.Вы можете использовать массив для поиска по всем отдельным переменным флага ввода, а когда вы найдете пропущенную переменную, используйте VNAME (), чтобы получить ее имя.
data have;
input name $ group1-group3 ;
cards;
Joe . 1 .
Moe 1 1 .
King 1 . 1
Penn . . 1
Zhee 1 . .
None 1 1 1
;
data want ;
set have ;
array flags group1-group3 ;
length flag $32 ;
do _n_=1 to dim(flags) while (missing(flag));
if missing(flags(_n_)) then flag=vname(flags(_n_));
end;
run;
proc print;
run;
Результаты:
Obs name group1 group2 group3 flag
1 Joe . 1 . group1
2 Moe 1 1 . group3
3 King 1 . 1 group2
4 Penn . . 1 group1
5 Zhee 1 . . group2
6 None 1 1 1