我在 SAS 中使用宏来循环特定库中的数据表。我将元数据信息放在 data null 步骤中,并与 where 语句和我的宏变量进行比较。
我的 SQL 步骤如下所示:
proc sql;
select quote(trim(code)) into :procedures separated by ', ' from procedures;
quit;
某些值code
包含“45.10”和“G0102”等值,因此不能强制转换为数字。宏包含以下行:
%macro filter_codes(indata, outdata);
data &outdata;
set &indata(where = (code in (&procedures)));
run;
%mend;
但是当使用“quote”函数双引号时,十进制值会产生问题。
我可以用单引号分隔值吗?
编辑:问题是由于 filter_codes 宏在调用执行步骤中运行(在一系列数据集上)并且在双引号内的宏变量中解析的双引号将结束调用执行。