[SAS格式]错误:对于格式COUNTRIES,重复此范围或重叠值:.-

时间:2017-02-09 00:21:50

标签: sas

我只是尝试在SAS studio上定义一种新格式。以下是我的代码,错误消息与标题中的相同。有人可以帮忙吗?非常感谢!

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 个答案:

答案 0 :(得分:0)

您的代码中存在两个不同的问题:

  1. 您的数据值中包含引号
  2. SAS正在尝试构建数字格式,而不是字符格式
  3. 您的数据线部分中的引号正在成为变量值的一部分,您可能并不打算这样做。你应该删除它们,即:

    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