gpt4 book ai didi

sas - proc sql outobs= 触发 SAS 警告

转载 作者:行者123 更新时间:2023-12-02 01:32:40 24 4
gpt4 key购买 nike

我们目前使用 %runquit 宏函数,详见此处 (http://analytics.ncsu.edu/sesug/2010/CC07.Blanchette.pdf)。 %runquit 宏如下所示。当遇到错误时,它基本上停止运行任何更多的 SAS 代码,并且可以用作 runquit 语句的替代:

%macro runquit;
; run; quit;
%if &syserr %then %abort cancel;
%mend;

因为在 proc sql 中使用 outobs 语句会触发系统错误(即使指定了 nowarn 选项)这意味着我们无法使用 %当我们需要使用 outobs= 选项时运行 宏。

以下示例将生成以下警告消息:

proc sql noprint outobs=3 /*nowarn*/;
create table tmp as
select age, count(*) as freq
from sashelp.class
group by 1
order by 2 desc
;
%runquit;

WARNING: Statement terminated early due to OUTOBS=3 option.

感谢 SAS 的完全不必要的警告。这种行为显然是预期的,因为我明确地编写了代码来要求它。当我们在 set 语句中指定 inobs=outobs= 时,我没有看到警告。为什么 proc sql 得到特殊对待?

有什么方法可以通过 proc sql 中的 outobs= 选项来禁用警告问题?或者,是否有另一种方法可以限制不会产生错误的 proc sql 的输出行?

最佳答案

假设您可以执行完整的 SQL 语句,您可以使用包含 obs 限制的数据步骤 View 来解决这个问题。

proc sql noprint ;
create table tmp as
select age, count(*) as freq
from sashelp.class
group by 1
order by 2 desc
;
%runquit;

data tmp_fin/view=tmp_fin;
set tmp(obs=3);
%runquit;

关于sas - proc sql outobs= 触发 SAS 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33309289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com