我尝试在SAS宏中使用substr函数,如下所示:
%let hg=Name;
data gg_;
set sashelp.class;
gh=%substr(&hg,1,3);
run;
我也试过了
data gg_;
set sashelp.class;
gh=%sysfunc(substr(&hg,1,3));
run;
其中,Name
是sashelp.class
中的变量
但是我没有将Name
变量中的前三个字符放到gh
中。我该怎么做呢?
发布于 2016-01-18 15:19:19
您混合了宏和数据步进逻辑。因为它是一个数据步骤,所以使用SUBSTR()函数,而不是%substr。如果宏变量包含要提取的文本,则将其引起来,否则保留宏变量不带引号。
gh=substr(&hg, 1, 3);
注:编辑以反映注释。
发布于 2016-01-18 20:05:06
如果要在宏函数中创建数据集,则需要使用普通的sas函数,因此只需使用substr()
而不是%substr()
。
%let hg=Name;
data gg_;
set sashelp.class;
gh=substr(&hg,1,3);
run;
https://stackoverflow.com/questions/34858021
复制相似问题