【问题标题】:how to put the name of a dataset as a column in SAS Macro如何将数据集的名称作为 SAS 宏中的列
【发布时间】:2015-08-25 13:25:51
【问题描述】:

我正在尝试编写一个宏。 Marco 是关于输出重复的。然后将它们全部附加到一个数据集中。该数据集将有两列:表名(我在一个库中选择)、主键。 那么,如何获取宏中的所有表名? 我以为我可以做到:dataset='&data.'作为该数据集中的新列。但是宏会将它们全部视为&data。而不是交换到表名。

谢谢

【问题讨论】:

  • 解析'中的宏变量不起作用,它使用&data作为字符串,"是你需要的,所以使用dataset="&data"。但我不明白这是你的问题还是你想要的帮助在宏中构建所描述的数据步骤。发布您拥有的代码总是好的,这样人们就可以更好地理解问题......

标签: macros sas


【解决方案1】:

要准确确定您的要求并不容易,但您可以使用以下两个起点。

您可以使用 :into 选项创建一个宏变量,其中包含由分隔符分隔的许多事物的列表:

PROC SQL NOPRINT;
SELECT EMPID,
INTO :E1 SEPERATED BY “ , ”

FROM dset;
QUIT;

%PUT &E1;

您还可以保存编号的宏变量和 &varnum(保存为变量的数据集的数量)并在循环中进行追加(假设您将数据集列出为 var1 到 varx):

*needs to be in a macro;
%macro  loop_through();
    %do i = 1 %to &Varnum;

       /* proc append code here with data = &&var&i 
    (etc, &&var&i will resolve to &var1, &var2 and so on) */

    %end;
%mend;

%loop_through();

【讨论】:

    猜你喜欢
    • 2015-11-18
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多