SAS中的自定义格式
问题描述:
我期待在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。行,该程序运行完美无误,但显然我的代码不转换。任何帮助?
答
尝试:
options insert=(fmtsearch=newlib);
这段代码告诉SAS在哪里可以找到格式(因为它没有存储在默认的WORK库)。
它需要在之前执行使用格式,以便SAS知道在哪里搜索它。所以在这种情况下,在步骤proc print
之前。
如果上面的选项不能正常工作(应该)尝试:
options fmtsearch=(newlib work);
这种方法的问题是,你必须确定和建立整个搜索路径(而不是插入的新路径开始)
我以为在PRINT PRINT步骤中提到该库会像我在之前的程序中那样做。我不确定我需要把这个OPTIONS命令的确切位置。 –
我更新了答案,它需要在库定义之后和格式被调用的地方之前。它不能自动使用的原因是你使用'proc format'中的'lib ='选项将格式保存为特定库中的永久格式。该库不会自动添加到格式搜索路径中(考虑可伸缩性 - 如果您拥有数百万个格式定义,则不需要它们全部定义和搜索) –
如果它以前工作过,则必须具有搜索路径中的该库。我在SAS Studio中测试了它,它工作正常.. –