根据 SAS 中的宏变量值筛选数据


%let var_list = n1 n2 n3;
data A;
call streaminit(123);       /* set random number seed */
do i = 1 to 100;
   n1 = rand("Normal");
   n2 = rand("Normal");
   n3 = rand("Normal");
   output;
end;
run;

假设我想基于 marco 变量 "&var_list" 过滤数据集,过滤宏变量中每个值都大于 0 的所有数据。我应该如何编写宏?

感谢您的帮助!

您的意思是要查找 N1、N2 和 N3 均为正数的记录吗?

data want ;
  set have ;
  if nmiss(of n1 n2 n3)=0 and min(of n1 n2 n3)>0; 
run;

转换为使用宏变量。

%let varlist=n1 n2 n3;
data want ;
  set have ;
  if nmiss(of &varlist)=0 and min(of &varlist)>0; 
run;

最新更新