【问题标题】:SAS suppress .lst files but keep ODS outputSAS 抑制 .lst 文件但保留 ODS 输出
【发布时间】:2017-07-01 02:40:19
【问题描述】:

我正在使用以下代码使用 SAS 进行 PCA 分析:

ods output Eigenvectors=PRINCEEV Eigenvalues=PRINCEEVAL;
proc princomp data=REPLACED PLOTS=SCORE(ELLIPSE NCOMP=5) NOPRINT;
    id time; 
run;
ods output close;

由于此分析生成的 lst 文件太大,我使用了 NOPRINT 选项。但是,似乎 NOPRINT 选项也消除了我所有的 ODS 输出。 (现在 PRINCEEV 和 PRINCEEVAL 都是空的):

ERROR: File WORK.PRINCEEVAL.DATA does not exist.
ERROR: Export unsuccessful.  See SAS Log for details.
259                                                                         putn

_______
                                                                            1
259      ! ame=YES;   run;
WARNING 1-322: Assuming the symbol PUTNAMES was misspelled as putname.

ERROR: File WORK.PRINCEEV.DATA does not exist.
ERROR: Export unsuccessful.  See SAS Log for details.
ERROR: Errors printed on page 1.

有没有办法在不影响ods输出的情况下抑制lst文件的生成?

更新:

根据following sas blog看来是不可能的:

你能把 NOPRINT 和 ODS OUTPUT 结合起来吗?

SAS 程序员渴望效率。阅读 NOPRINT 选项后 可以使程序运行得更快,雄心勃勃的程序员可能 尝试使用 NOPRINT 选项运行过程,但使用 ODS OUTPUT 语句捕获一张表的结果。对不起朋友, 但你不能那样做。 NOPRINT 选项意味着没有 ODS 表 已创建,因此无法选择表并将其保存到数据中 设置。

但问题是,我在云计算服务器上的空间有限。 lst 文件除了浪费我的空间外什么也没做。当 SAS 程序与外部进程一起运行时删除 lst 文件也会在 SAS 中产生一个io error(我已经尝试过了)。

还有吗?

【问题讨论】:

    标签: sas


    【解决方案1】:

    我建议:

    ods listing close ;
    
    ods output Eigenvectors=PRINCEEV Eigenvalues=PRINCEEVAL;
    proc princomp data=REPLACED PLOTS=SCORE(ELLIPSE NCOMP=5) NOPRINT;
        id time; 
    run;
    ods output close;
    

    这将关闭列表目的地,所以应该可以正常工作。

    我在一篇相关博文中注意到,Rick 主张:

    ods exclude _all_ ;
    

    http://blogs.sas.com/content/iml/2015/05/28/five-reasons-ods-exclude.html

    【讨论】:

    • 我将ods listing close ;放在ODS输出语句的上方还是下方?
    • 只需确保在运行过程之前关闭列表目的地。
    【解决方案2】:

    对上一个答案的小改动:删除 NOPRINT 选项,如果您有更多代码,则在创建 ODS 输出后打开 ods 列表。

    ods listing close ;
    ods output Eigenvectors=PRINCEEV Eigenvalues=PRINCEEVAL;
    proc princomp data=REPLACED PLOTS=SCORE(ELLIPSE NCOMP=5) /*NOPRINT*/;
        id time; 
    run;
    ods output close;
    ODS LISTING;
    

    【讨论】:

      【解决方案3】:

      如果您通过 bash 在您的云计算服务器上执行您的 sas 脚本,那么您可以将您的 .lst 文件发送到/dev/null

      sas -print /dev/null script.sas
      

      -print 选项只会影响您的 .lst,但不会影响任何与 ODS 相关的输出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        • 2019-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多