【问题标题】:Get ODS output table names without actually having to run a PROC?无需实际运行 PROC 即可获取 ODS 输出表名称?
【发布时间】:2013-12-27 16:11:47
【问题描述】:

问题:有没有办法直接从 PROC 中获取 ODS 表名,而不用 ods trace on 运行程序?

背景:我经常需要从 PROC 输出 ODS 数据集,但我知道获取可用数据集列表的唯一方法是插入

ods trace on;

在PROC之前,然后运行程序,然后查看日志文件找到合适的数据集名称,然后插入我的ods output语句,重新运行。

在一个耗时的程序中,该过程可能需要很多时间,而且必须运行一个程序才能弄清楚如何继续编程似乎效率低下。

我找不到任何列出 PROC 可用 ODS 表的 SAS 文档,但如果存在类似的东西,那将是这个问题的一个很好的答案。我知道 ODS 输出表会根据指定的选项而有所不同,但似乎仍然可以编译一个全面的列表,并附上关于每个表是否依赖于 PROC 特定选项的注释。

如果有类似 meta-PROC 的东西,可以指定 PROC 名称并返回 ODS 表名称,而无需运行任何其他代码,我也会喜欢它。

【问题讨论】:

    标签: sas


    【解决方案1】:

    SAS 文档中有一个编译。这是针对 9.4 的,但在所有版本中都有一个。

    http://support.sas.com/documentation/cdl/en/odsug/66611/HTML/default/viewer.htm#p0mnbijm0t6w1cn1dpf3q5suxk4u.htm

    【讨论】:

    • 完美,正是我想要的!
    【解决方案2】:

    如果输出过程能够以零观察值运行(通常,如果您不进行任何程序代码生成,这可能是案子)。您也可以创建一个不使用实际数据的测试过程运行(尽管这取决于您在做什么)。 (您不能使用obs=0,因为那样不会产生任何输出。)

    例如:

    options obs=1;
    ods trace on;
    proc freq data=sashelp.class;
    run;
    ods trace off;
    options obs=max;
    

    如果是使用模板的过程,您也可以从已安装的模板中确定名称。例如,PROC FREQ 可以。

    打开结果资源管理器,然后右键单击顶部的“结果”节点。选择“模板”。这将打开模板资源管理器。然后寻找你的程序。大多数统计程序都在Sashelp.Tmplstat。但是,FREQ 不是;它位于Sashelp.Tmplbase,在Base.Freq 下。每个以define table ... 开头的 PROC FREQ 条目都是一个单独的 ODS 表; PROC FREQ 的主要参数是OnewayfreqsCrosstabFreqs,但通常所有与它们具有相似图标的都是表格(蓝色的是动态变量)。

    例如,对于PROC REG,它位于 SASHELP.tmplstat 文件夹 (SASHELP.tmplstat.Reg) 中,并且有几十个表可供查看,通常具有逻辑名称。并非每次运行都会生成每个表(这取决于您要求什么以及 PROC 决定需要什么),我不确定每个表都可以通过 ODS 拦截,但大多数都可以。

    【讨论】:

    • 谢谢,这解决了时间问题,除非它像回归一样需要一定数量的 obs 才能成功运行。我想我只是希望能够搜索“SAS PROC REG ods 表”并查看它们的列表,就像我想要的 PROC REG 选项或函数参数或类似的东西一样。
    • @MasonDeCamillis 我实际上正在用另一个选项更新它。 PROC REG 是您(目前)感兴趣的那个吗?
    • 现在,是的。结果资源管理器是个好主意!也许我可以从中创建我想要的 ODS 表编译。
    • SAS 文档中有编译。这是针对 9.4 的,但在所有版本中都有一个。 support.sas.com/documentation/cdl/en/odsug/66611/HTML/default/…
    • 啊,这很酷。 @DomPazz,您应该回答(cmets 是短暂的,毕竟最终会被删除):)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多