我有以下代码:
%macro area (ds);
data &ds (keep = areaname NSA_Tot SA_Tot);
set ms_File."&ds$"n (firsbobs = 2);
rename F2 = areaname not_seasonally_adjusted = NSA_tot seasonally_adjusted = SA_Tot;
label F2 = ' ' not_seasonally_adjusted = ' ' seasonally_adjusted = ' ';
run;
%mend area;
%area (%str(Coeur d'Alene, ID));
代码无效,因为我的数据集有一个逗号和撇号作为数据集名称的一部分。因此宏不起作用。我怎样才能解决这个问题?
基本上,使用上面的代码,我希望数据和集合解析为以下代码:
data Coeur d'Alene, ID;
set ms_File."Coeur d'Alene, ID$"n (firstobs =2);
....
答案 0 :(得分:3)
要使用这些类型的名称,您需要设置options validmemname=extend;
。这通常是默认关闭。
这有效:
options validmemname=extend;
data "Coeur d'Alene, ID"n;
x=1;
run;
data test;
set "Coeur d'Alene, ID"n;
run;
如果您设置了options validmemname=compat;
,那么您的Excel libname引擎应该将名称转换为有效的SAS名称,通常是使用下划线替换无效字符,这样可能会有效:
options validmemname=extend;
data test;
set msfile.Coeur_d_Alene__ID;
run;
您可以针对文件的libname运行proc datasets
进行验证,或者只是在资源管理器中浏览它。