我正在尝试在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。 我该怎么做?
答案 0 :(得分:1)
您正在混合宏和数据步骤逻辑。 由于它是数据步骤,因此使用SUBSTR()函数,而不是%substr。如果宏变量由要提取的文本组成,则引用它,否则保持宏变量不加引号。
gh=substr(&hg, 1, 3);
注意:编辑以反映评论。
答案 1 :(得分:0)
如果要在宏函数中创建数据集,则需要使用普通的sas函数,因此只需使用substr()
而不是%substr()
。
%let hg=Name;
data gg_;
set sashelp.class;
gh=substr(&hg,1,3);
run;