2017-07-25 137 views
1

我期待在SAS中创建自定义格式,将NA,EU和AF等大陆代码转换为北美,欧洲和非洲。一切都已建立,我有一个.csv文件包含国家和他们的大陆代码的SAS读数,我可以打印一张表格,显示每个国家的国家代码。现在我只想使用自定义格式将代码转换为大陆名称。到目前为止,我有以下的(我已经错过了所有数据的步骤,因为这工作正常):SAS中的自定义格式

LIBNAME newlib 'C:\Users\C*****\Documents\My WPS Files'; 

PROC FORMAT lib = newlib; 
VALUE $cont 
    'AS' = 'Asia' 
    'EU' = 'Europe' 
    'NA' = 'North America' 
    'SA' = 'South America' 
    'AF' = 'Africa' 
    'OC' = 'Oceania' 
    '' = 'Unknown'; 
RUN; 

PROC PRINT DATA = newlib.life_ex (OBS = 10) NOOBS; 
    TITLE 'Top 10 Life Expectancies in 2010'; 
    VAR Country YR2010 Continent; 
    FORMAT Continent$cont.; 
RUN; 

如果我跑,我得到了下面的错误。

2947  FORMAT Continent$cont.; 
        ^
ERROR: Format $cont was not found or could not be loaded 

因为我下面我在这工作得很好其它SAS程序以前使用过,但是这一次将不会执行的具体步骤,我不明白这一点。如果我删除FORMAT Continent $ cont。行,该程序运行完美无误,但显然我的代码不转换。任何帮助?

回答

1

尝试:

options insert=(fmtsearch=newlib); 

这段代码告诉SAS在哪里可以找到格式(因为它没有存储在默认的WORK库)。

它需要在之前执行使用格式,以便SAS知道在哪里搜索它。所以在这种情况下,在步骤proc print之前。

如果上面的选项不能正常工作(应该)尝试:

options fmtsearch=(newlib work); 

这种方法的问题是,你必须确定和建立整个搜索路径(而不是插入的新路径开始)

+0

我以为在PRINT PRINT步骤中提到该库会像我在之前的程序中那样做。我不确定我需要把这个OPTIONS命令的确切位置。 –

+0

我更新了答案,它需要在库定义之后和格式被调用的地方之前。它不能自动使用的原因是你使用'proc format'中的'lib ='选项将格式保存为特定库中的永久格式。该库不会自动添加到格式搜索路径中(考虑可伸缩性 - 如果您拥有数百万个格式定义,则不需要它们全部定义和搜索) –

+0

如果它以前工作过,则必须具有搜索路径中的该库。我在SAS Studio中测试了它,它工作正常.. –