我希望在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。线,程序运行完美,没有错误,但显然我的代码没有转换。有什么帮助吗?
答案 0 :(得分:1)
尝试:
options insert=(fmtsearch=newlib);
此代码告诉SAS在哪里可以找到格式(因为它没有存储在默认的WORK库中)。
需要在使用格式之前执行,以便SAS知道在哪里搜索它。所以在这种情况下,在proc print
步之前。
如果上述选项不起作用(应该),请尝试:
options fmtsearch=(newlib work);
这种方法的问题在于您必须识别并构建整个搜索路径(而不是在开始时插入新路径)