下面程序是我的思路,但问题是var1-100里面有数字型有字符型,无法在一个数组共存。
(如果逐个变量判断类型再分两个数组分别计算感觉不优雅)
%let checkList=var1 var2 ... var100;
/*先假设所有列是missing,如果有一列不是missing就不再判断剩余变量*/
data out;
set in;
MISSING=1;
array arr(*) &checkList;
do i=1 to dim(arr);
if missing(arr
)=0 then
do;
MISSING=0;
leave;
end;
end;
run;
于是我打算用scan函数,但得到变量名的字符串以后,不知道怎么转成变量名,也就是说下面红色字体如何得到var的变量名?
%let checkList=var1 var2 ... var100;
data out;
set in;
MISSING=1;
i=0;
do until(var=' ');
i+1;
var=scan(“&checkList”,i);
if missing(somefunction(var))=0 then
do;
MISSING=0;
var=' ';
end;
end;
run;
最后的问题是,不管我的思维方式,正常的程序员是如何解决这个问题的:即判断N个变量的值,如果有一个变量的值不是missing,就判断为xxx,并且无需判断剩余变量;如果所有变量都是missing,就判断为yyy。