[SAS 格式]错误:对于格式国家/地区,此范围重复,或值重叠:.-



我只是尝试在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;

代码中有两个不同的问题:

  1. 数据值中包含引号
  2. 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

最新更新