通过解引用变量来设置数据集

时间:2018-07-18 13:17:27

标签: sas

我想通过使用对数据集名称的引用来设置数据集,但是我收到错误消息:错误:文件dataset_name123不存在(work.dataset123存在)是什么问题?

data _null_;
%let product = 'dataset_name123';
set work.&product nobs = row_no;
put row_no;
put &product;
run;

2 个答案:

答案 0 :(得分:1)

在数据步骤中执行%let语句不是一个好主意。宏变量和SAS变量的创建方式不同。  这段代码有两个问题。第一个是宏变量周围的引号,解析后将使用它作为表名,因此您的查询失败,因为表名不能用引号引起来。 第二个是宏变量的put语句,以解决您需要%put的问题。

下面是修改后的代码。

 data class;
 set sashelp.class;
 run;

 data _null_;
%let product = class;
set work.&product nobs = row_no;
put row_no;
%put &product;
run;

答案 1 :(得分:1)

成员名称未加引号。从您的宏变量中删除引号。在宏代码中,所有内容都是字符,因此无需在字符串文字周围添加引号。引号成为宏变量值的一部分。

%let product = dataset_name123;
%put &=product;

data _null_;
  set work.&product nobs = row_no;
  put row_no;
  put "&product";
  stop;
run;

如果确实在数据集引用中包含引号,则SAS会将​​其解释为数据集文件本身的物理名称。像这样的代码:

data want;
  set 'dataset_name123';
run;

将在当前工作目录中查找文件名'dataset_name123.sas7bdat'。