我有一个宏变量,它具有如下所示的多于1个观察值。宏变量的单引号
%let age = 12,34,56;
%put &age;
现在我想用年龄作为我其中参数PROC SQL。
proc sql;
select *
from family
where age in ("&age");
quit;
我用%bquote,报价%,%STR()还有更多,但没有成功呢。
我有一个宏变量,它具有如下所示的多于1个观察值。宏变量的单引号
%let age = 12,34,56;
%put &age;
现在我想用年龄作为我其中参数PROC SQL。
proc sql;
select *
from family
where age in ("&age");
quit;
我用%bquote,报价%,%STR()还有更多,但没有成功呢。
尝试没有任何引号(我假设年龄是一个数字变量)。
如果年龄是一个字符,那么你可以重写这样的WHERE语句;
where input(age, 8.) in (&age)
当你写
"&age"
SAS创建里面的所有值和逗号单个字符串,这不是我们需要对运营商。
已添加。 这是我的代码工作:
%let age = 12,34,56;
%put &age;
data family;
input age @@;
datalines;
15 16 17 12 33 34 55 56
;
run;
proc sql;
select *
from family
where age in (&age);
quit;
这应该这样做,数字上没有引号 –
警告:明显的符号引用AGE未解决。 – LonelySoul
当我们创建宏时,它会自动被视为“字符”。在这种情况下,年龄是字符。我相信“库玛”在这里是一个很大的麻烦。 – LonelySoul
为什么标题说“单引号”,但你(排序的,正确的)用双引号? – Joe
是的。可能需要更改标题 – LonelySoul