我超过在特定库中的数据表使用宏在SAS循环。我将元数据信息放入数据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;
但十进制数值创建一个问题,当使用“引用”功能的双引号。
我可以用单引号分隔值?
编辑:问题是由于filter_codes宏在调用执行步骤(在数据集的范围内)运行以及双引号内的宏变量中解析的双引号会结束调用执行而引起的。
您的代码没有任何明显错误,除非您的值本身包含引号。当然没有什么事在SAS如何使用''''从“'除了宏变量的分辨率,这似乎并没有从你的问题与此有关的不同。在我身边一个简单的测试证明了它做工精细,使用'从height'' sashelp.class'。你能发布一些示例数据,显示这不起作用吗? – Joe
您是对的,导致错误的原因是引用的文本在数据_null_步骤中的调用执行命令中解析。我修改了这个问题。 – AdamO