sas字符串在代码中的转换

sas字符串在代码中的转换,sas,sas-macro,Sas,Sas Macro,我正在尝试使用SAS 9.4数据哈希obj。 这里有一些代码: data joined; if 0 then set data1 data2; if _n_=1 then do; declare hash merger (dataset:'data2'); merger.definekey('some_key'); merger.definedata('col1','col2'); merger.definedone

我正在尝试使用SAS 9.4数据哈希obj。 这里有一些代码:

data joined;
    if 0 then set data1 data2;
    if _n_=1 then do;
        declare hash merger (dataset:'data2');
        merger.definekey('some_key');
        merger.definedata('col1','col2');
        merger.definedone();
    end;
    set data1;
    if merger.find(key:some_key)=0 then output;
run;
现在我想让它像宏一样播放:

%let list=2 3 4 5;
 data joined;
        if 0 then set data1 data_&i.;
        if _n_=1 then do;
            declare hash merger (dataset:'data_&i.');
            merger.definekey('some_key');
            merger.definedata('col1','col2');
            merger.definedone();
        end;
        set data1;
        if merger.find(key:some_key)=0 then output;
  run;
但正如我所看到的,问题是这里引用了一些名言:

dataset:'data_&i.'
如何将此字符串转换为sas代码?
在python中,我可以执行类似str(data[i])的smth

使用双引号,宏变量将解析

declare hash merger (dataset:"data_&i.");

顺便说一句,你实际上不必在宏中这样做;您可以简单地在普通的数据步代码中将散列参数构造为字符串。事实上,这只是一个示例,实际程序更庞大。我想知道将sas宏变量发送到文本的方法。但ofc感谢您的关注。)