【问题标题】:substr function with macro variable name具有宏变量名称的 substr 函数
【发布时间】:2016-04-23 19:38:35
【问题描述】:

我正在尝试在 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;

这里Namesashelp.class中的变量

但我没有将Name 变量中的前三个字符转换为gh。 我该怎么做?

【问题讨论】:

    标签: macros sas


    【解决方案1】:

    如果您在宏函数中创建数据集,那么您希望使用普通的 sas 函数,因此您只需使用 substr() 而不是 %substr()

    %let hg=Name;
    data gg_;
    set sashelp.class; 
    gh=substr(&hg,1,3);
    run;
    

    【讨论】:

      【解决方案2】:

      您正在混合使用宏和数据步骤逻辑。 因为它是一个数据步,所以使用 SUBSTR() 函数,而不是 %substr。如果宏变量包含要提取的文本,则引用它,否则不要引用宏变量。

      gh=substr(&hg, 1, 3);
      

      注意:已编辑以反映评论。

      【讨论】:

      • 我认为他的意思是宏变量包含要在 SUBSTR() 函数调用中使用的变量的名称。所以去掉引号。
      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多