如何将数据集与sas中的格式目录进行匹配

时间:2016-05-31 05:07:21

标签: sas

我已经下载了一个sas数据集和一个随附的格式目录。这可能是超级基础,但我似乎无法设置库以便我可以使用这些格式,除非我使用NOFMTERR选项,否则我无法打开数据集。它们都在同一个Windows文件夹中。请帮忙。

2 个答案:

答案 0 :(得分:2)

以下代码应说明如何将库(在本例中为库mylib)添加到FMTSEARCH选项,该选项指示搜索哪些库的SAS格式:

/* Display the current fmtsearch option - librefs searched in order for formats */
%put %sysfunc(getoption(fmtsearch));

libname mylib 'windows-folder';

/* Append the library containing the format catalog */
options append=(fmtsearch=mylib);

/* Check the fmtsearch option again */
%put %sysfunc(getoption(fmtsearch));

只需将SAS指向您的格式目录所在的库,这样就可以解决格式错误并允许您显示格式化数据。

答案 1 :(得分:1)

对于9.1.3的用户,您可以直接更改fmtsearch选项。这里有一个与上面的@mjsqu代码最相似的方法(它保留了已经存在的格式选项)并追加到最后。

* Store fmtsearch option value in macro variable;
%let fmtsearch=%sysfunc(getoption(fmtsearch));

*Append NEWLIB to the end (assuming NEWLIB is your library name);
*Uses SUBSTR to strip off the end parenthesis;
%let fmtsearch_new = %substr(&fmtsearch,1,%length(&fmtsearch.)-1) NEWLIB);

*Check new value;
%put &fmtsearch_new;

*Set fmtsearch option to new value;
options fmtsearch=&fmtsearch_new.;

*Check that option was set;
%put %sysfunc(getoption(fmtsearch));

当然,如果多次运行,这将多次重新附加值;这不是有害的,但可能看起来很奇怪。您可以进行一些额外的检查以查看它是否已经在字符串中,如果是,则不会重新添加。