Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SAS格式目录_Sas_Data Formats - Fatal编程技术网

使用SAS格式目录

使用SAS格式目录,sas,data-formats,Sas,Data Formats,我在SAS中收到了一个数据集和一个格式目录,我正试图将其打开,但不知何故,我没有正确地应用格式目录。这是我使用的代码。我已经研究了SAS网站,我认为我有正确的步骤来调用目录,但它不起作用。我确信这是我犯的一个基本错误 libname in 'U:/'; libname library 'U:/'; Options fmtsearch = (library.formats_raw); data ae; set in.ae; format aeactae $AEMGMT. A

我在SAS中收到了一个数据集和一个格式目录,我正试图将其打开,但不知何故,我没有正确地应用格式目录。这是我使用的代码。我已经研究了SAS网站,我认为我有正确的步骤来调用目录,但它不起作用。我确信这是我犯的一个基本错误

libname in 'U:/';
libname library 'U:/';

Options fmtsearch = (library.formats_raw); 

data ae;
set in.ae;
format 
    aeactae $AEMGMT.
    AEACTSM $ACTION.
    AEDVIS $VISIT.
    AEENDT DATE11.
    AEINT $AEINT.
    AEIRLOC $INJSITE.
    AEIRMEAS $YESNO.
    AEIRTERM $ISR.
    AEIRVIS $VISIT.
    AEIRYN $YESNO.
    AEOUT $OUTCOME.
    aerel $aerel.
    AESER $YESNO.
    AESTDT DATE11.
    AEYN $YESNO.
    EVTDT DATE11.
    LASTUPD EURDFDT20.;
run;
对于每个变量,我在日志中得到以下错误:

format
            aeactae $AEMGMT.
                     --------               
ERROR 48-59: The format $AEMGMT was not found or could not be loaded.

编辑:给定新信息,答案将更改。剩下的我留着,以防万一

您有一个格式数据集,而不是格式目录。您需要运行以下命令:

proc format cntlin=in.formats_raw;
quit;
导入格式。当然,这假设它是正确创建的-它至少应该有
fmtname
start
label
,可能还有一些其他变量(
type
hlo
end
是常见的)

这会将保存到
SAS
数据集的格式导入工作环境。如果要创建永久目录,应在
proc format
语句中指定
lib=in
或存储它们的位置


旧答案:

你通常做得对,尽管你做了一些你不需要做的事情

应避免使用库libname。这是一些不知道如何正确使用格式的人使用的东西,但这真的不是一个好主意,因为它在格式搜索中得到了特别的偏爱,如果你有多个格式,这种方式可能会有问题<代码>库和
工作
自动在fmtsearch列表中,除非明确列出,否则优先考虑。但当格式目录不是
formats.sas7bcat
时,这实际上对您没有帮助

在您的情况下,只需定义一次(中的
),然后执行以下操作:

libname in 'U:/';
Options fmtsearch = (in.formats_raw work);
您将
work
放在其中,以确保格式目录优先于它

如果您在该文件夹中有一个文件
formats_raw.sas7bcat
,那么它应该可以工作。如果没有,则可能会发生其他情况(例如,如果文件是
.sas7bdat
,则可能有一个文件打算通过
cntlin
导入)

这是一个简单的工作示例:

libname temp 'c:\temp';
proc format lib=temp.formats_raw;
  value YNF
  1='Yes'
  2='No'
  ;
quit;

options fmtsearch=(temp.formats_raw work);

data test;
  x=1;
  format x YNF.;
  put x= ynf.;
run;

fmtsearch
更改为
(临时工作)
,您将看到它失败(因为
temp\formats.sas7bcat
不存在)。

编辑:给定新信息,答案将更改。剩下的我留着,以防万一

您有一个格式数据集,而不是格式目录。您需要运行以下命令:

proc format cntlin=in.formats_raw;
quit;
导入格式。当然,这假设它是正确创建的-它至少应该有
fmtname
start
label
,可能还有一些其他变量(
type
hlo
end
是常见的)

这会将保存到
SAS
数据集的格式导入工作环境。如果要创建永久目录,应在
proc format
语句中指定
lib=in
或存储它们的位置


旧答案:

你通常做得对,尽管你做了一些你不需要做的事情

应避免使用库
libname。这是一些不知道如何正确使用格式的人使用的东西,但这真的不是一个好主意,因为它在格式搜索中得到了特别的偏爱,如果你有多个格式,这种方式可能会有问题<代码>库和
工作
自动在fmtsearch列表中,除非明确列出,否则优先考虑。但当格式目录不是
formats.sas7bcat
时,这实际上对您没有帮助

在您的情况下,只需定义一次(中的
),然后执行以下操作:

libname in 'U:/';
Options fmtsearch = (in.formats_raw work);
您将
work
放在其中,以确保格式目录优先于它

如果您在该文件夹中有一个文件
formats_raw.sas7bcat
,那么它应该可以工作。如果没有,则可能会发生其他情况(例如,如果文件是
.sas7bdat
,则可能有一个文件打算通过
cntlin
导入)

这是一个简单的工作示例:

libname temp 'c:\temp';
proc format lib=temp.formats_raw;
  value YNF
  1='Yes'
  2='No'
  ;
quit;

options fmtsearch=(temp.formats_raw work);

data test;
  x=1;
  format x YNF.;
  put x= ynf.;
run;

fmtsearch
更改为
(临时工作)
,您将看到它失败(因为
temp\formats.sas7bcat
不存在)。

格式目录的确切文件名是什么?U:/formats\U raw.sas7bdatAh,那么您就没有格式目录了!我道歉。。。发送了sas7bdat文件,然后通过运行一个过程,它将其转换为格式_raw.sas7bcat,我认为这是目录文件。格式目录的确切文件名是什么?U:/formats_raw.sas7bdatAh,那么您就没有格式目录了!我道歉。。。发送了sas7bdat文件,然后通过运行proc,它将其转换为格式_raw.sas7bcat,我认为这是目录文件。谢谢-问题是我没有运行此语句:“proc format cntlin=in.formats_raw;退出谢谢-问题是我没有运行以下语句:“proc format cntlin=in.formats\u raw;退出