我想通过使用对数据集名称的引用来设置数据集,但是我收到错误消息:错误:文件dataset_name123不存在(work.dataset123存在)是什么问题?
data _null_;
%let product = 'dataset_name123';
set work.&product nobs = row_no;
put row_no;
put &product;
run;
答案 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'。