SAS中的自定义格式

时间:2017-07-25 09:50:51

标签: sas

我希望在SAS中创建一个自定义格式,将NA,EU和AF等大陆代码转换为北美,欧洲和非洲。一切都已经建立,我在包含国家及其大陆代码的.csv文件中读取SAS,我可以打印一个表格,显示每个国家/地区及其各自的国家/地区代码。现在我只想使用自定义格式将代码转换为大陆名称。到目前为止,我有以下内容(我错过了所有的DATA步骤,因为这很好):

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

答案 0 :(得分:1)

尝试:

options insert=(fmtsearch=newlib);

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

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

如果上述选项不起作用(应该),请尝试:

options fmtsearch=(newlib work);

这种方法的问题在于您必须识别并构建整个搜索路径(而不是在开始时插入新路径)