SAS中的自定义格式

SAS中的自定义格式,sas,Sas,我期待在SAS中创建一个自定义格式,将北美、欧洲和非洲大陆的代码(如NA、EU和AF)转换为北美、欧洲和非洲。一切都已经设置好了,我在一个包含国家及其大陆代码的.csv文件中读取SAS,我可以打印一个表格,显示每个国家及其各自的国家代码。现在,我只想使用自定义格式将代码转换为大陆名称。到目前为止,我有以下几点(我遗漏了所有的数据步骤,因为这很好): 如果我运行这个,我会得到以下错误 2947 FORMAT Continent$cont.;

我期待在SAS中创建一个自定义格式,将北美、欧洲和非洲大陆的代码(如NA、EU和AF)转换为北美、欧洲和非洲。一切都已经设置好了,我在一个包含国家及其大陆代码的.csv文件中读取SAS,我可以打印一个表格,显示每个国家及其各自的国家代码。现在,我只想使用自定义格式将代码转换为大陆名称。到目前为止,我有以下几点(我遗漏了所有的数据步骤,因为这很好):

如果我运行这个,我会得到以下错误

2947        FORMAT Continent$cont.;
                       ^
ERROR: Format $cont was not found or could not be loaded
我不明白这一点,因为我正在遵循我以前在其他SAS程序中使用过的正确步骤,这些程序运行良好,但这一个不会执行。如果我删除$cont.行格式,程序运行正常,没有错误,但显然我的代码没有转换。有什么帮助吗?

试试:

options insert=(fmtsearch=newlib);
此代码告诉SAS在何处查找格式(因为它未存储在默认工作库中)

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

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


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

我认为,在PROC PRINT步骤中提到库时,它将与我在以前的程序中所做的一样。我不确定需要将此选项命令放在何处。我更新了答案,它需要在库定义之后和调用格式的位置之前。它不自动可用的原因是您正在使用
proc format
中的
lib=
选项将格式保存为特定库中的永久格式。该库不会自动添加到格式搜索路径(从可伸缩性的角度考虑——如果您有数百万个格式定义,您可能不希望它们一直都被定义并可搜索),如果它以前工作过,那么您的搜索路径中一定有该库。我在SAS Studio中测试了这一点,效果很好。好的,谢谢你的澄清,我现在了解更多。我尝试使用您建议的行,得到以下结果:错误:系统选项“插入”未知,错误:系统选项的值FMTSEARCH需要括号,错误:find”)“当需要一个名称时。我遵循了您的新方法,效果非常好,谢谢。
options insert=(fmtsearch=newlib);
options fmtsearch=(newlib work);