SAS-保留要处理的表的名称

时间:2018-10-10 09:26:35

标签: sas

我正在读取许多表,想知道正在处理的表的名称,因此可以将其保存到输出表中。是否有自动变量或某种标志会有所帮助?我确定在读取CSV文件列表等时可以完成此操作。但这是数据集。像这样:

%let table_list=one two three;
Data whatever;
  set &table_list;
  table_name = ?????;

2 个答案:

答案 0 :(得分:3)

您需要在SET语句上使用INDSNAME =选项。查找详细信息。

INDSNAME =变量

创建并命名一个变量,该变量存储从中读取当前观测值的SAS数据集的名称。存储的名称可以是数据集名称或物理名称。物理名称是操作环境识别文件的名称。

答案 1 :(得分:1)

如果您刚刚在上一个proc或datastep中创建了数据集,则可以使用&SYSLAST自动宏变量来检索其名称。

如果要将其保存为下游数据集的元数据的一部分,而不是将其存储在变量中,则一种选择是为该数据集分配标签,例如

data input_ds;
  a=1;
  output;
run;

%put &SYSLAST;

data output_ds(label="created from &SYSLAST");
  set input_ds;
  b=1;
run;

%put &SYSLAST;

您还可以使用proc数据集来分配数据集标签:

/*Modify an existing label*/
proc datasets lib = work;
  modify output_ds(label="New label");
  run;
quit;

您可以使用attrc函数来检索数据集标签。