我只是尝试在SAS工作室定义一种新的格式。以下是我的代码,错误 msg 如标题所示。谁能帮忙?多谢!
data countries;
input Start $ Label $;
retain FmtName 'countries';
datalines;
'AU' 'Austr'
'CH' 'China'
;
proc format library=orion.MyMacFmts1 fmtlib cntlin=countries;
select $countries;
run;
代码中有两个不同的问题:
- 数据值中包含引号
- SAS 正在尝试构建数字格式,而不是字符格式
数据行部分中的引号正在成为变量值的一部分,您可能不希望这样做。 您应该删除它们,即:
data countries;
input Start $ Label $;
retain FmtName '$countries'; *<-- added $ sign!
datalines;
AU Austr
CH China
;
如前所述,您的 PROC FORMAT 语句正在创建数字格式"国家/地区"。SAS 尝试将字符值转换为数字,并且您得到空值(重复,因此出现错误消息(。 若要告诉 SAS 你想要字符格式,请在名称中添加 $ 前缀($ 实际上是格式名称的一部分(。 您还可以向数据集添加 TYPE 变量。
然后你的代码工作:
proc format library=work.formats fmtlib cntlin=countries;
select $countries;
run;
fmtlib 选项和 select 语句只是告诉 SAS 打印格式(这有时有助于调试(。 它们是可选的,因此这将起作用:
proc format library=work.formats cntlin=countries;
run;
测试类似:
307 data _null_;
308 length Country $8;
309 do country="AU","CH","USA";
310 put country country $countries.;
311 end;
312 run;
AU Austr
CH China
USA USA