我是SAS新手。尝试声明某个操作的结果为值的宏变量时遇到麻烦。
data _null_;
%let var1 = 12345;
%let var2 = substr(&var1., 4,5);
run;
我得到var2
的值为substr(&var1., 4,5)
(字符串),而不是我想要的45
。如何使变量声明评估函数?
对不起,这个问题很简单。我看了一下文档,但找不到答案。
答案 0 :(得分:1)
有一个名为%substr()
的宏等效项,可以如下使用:
%let var1 = 12345;
%let var2 = %substr(&var1., 4,2);
%put var2 = &var2;
请注意,宏语言处理不需要data
和run
语句,%substr()
(和substr()
)的第3个参数指定所需的长度,而不是最后一个字符的位置,这就是为什么我使用2
而不是5
的原因。
编辑:另外,如果没有等效的宏,则可以使用%sysfunc()
来使用宏代码中的数据步长函数。请参阅documention,以获取全部详细信息,因为有一些怪癖,例如不使用引号以及可以使用的数据步骤函数列表的一些例外情况。