【问题标题】:Markdown in other statistics packages than R [closed]R以外的其他统计包中的降价[关闭]
【发布时间】:2013-12-30 14:36:51
【问题描述】:

我是R markdown 的忠实粉丝,我发现它比编织 LaTeX 更容易获得快速的项目文档(少于 15 页)。但是,有时我还必须支持其他统计包(SPSSStata + SAS),并且想知道这些包的等效解决方案。

在某种程度上,这可能会回到使用某种原始 Noweb 代码 + markdown 文件在命令行上进行编译。我想从 R 调用其他包是另一种选择。

我看过 John Muschelli 的这个示例:http://rpubs.com/muschellij2/3888,看起来好像他将 Stata 代码编入了 R markdown 文件。

谁能提供具体的例子来说明如何在 Stata、SAS 或 SPSS 中做到这一点?

我知道SASweaveStatWeave(后者显然坏了???),但认为降价解决方案在我们的案例中会更有利。

【问题讨论】:

    标签: sas stata knitr spss r-markdown


    【解决方案1】:

    我不确定这是否是您想要的,但如果您希望在 SAS 中创建包含统计报告的 .html 文件,那么您可以使用输出交付系统 (ODS)。

    示例语法为:

    ods html file='pathofdirectory\filename.html' <additional options>;
        proc print...  (SAS code that generates output)
        proc means...
        proc freq...
        proc gchart...
        proc gplot...
        ...        
    ods html close;
    

    【讨论】:

    • 我实际上想比 ods 设置更进一步,并在报告中包含大量其他输入,即大量文本、图像、引文(pandoc + latex)和抓取的单个数字从统计表中。结果应该类似于support.sas.com/resources/papers/proceedings12/324-2012.pdf - 这是一个完全可重复且自包含的分析文档。最好是所有不同统计包的方法应该尽可能相似。
    【解决方案2】:

    Stata 有自己的 SMCL 用于日志注释,M 代表标记。使用不同语言的主要原因是,在看不到文档结尾的情况下,即在交互式会话中,必须逐行创建和解释 SMCL。当您提出要求时,Stata 会自动创建它作为注释,并且可以由用户或程序员规定,作为调整 Stata 显示选择的一种方式。

    与您的问题的可能联系是 SMCL 可以翻译为 HTML,从而打开了各种大门。因此,在 Stata 中很容易做一些工作,在 SMCL 中保留一个 log 文件,然后将日志文件转换为 HTML。如果没有进一步的工作,你不会得到任何真正好的东西,但进一步的工作很容易,相当于做你会做的任何事情,但是在你最喜欢的文本编辑器或文本处理器中,而不是在 Stata 中。

    log2html 使这更容易,Stata 用户可以使用ssc inst log2html 安装它。它利用了 Stata 中未记录的功能。

    Stata 的帮助文件也可以以相同的方式翻译成 HTML(但如果使用官方帮助文件这样做,请考虑版权问题;使用您自己的帮助文件是公平的)。

    【讨论】:

    • 这是一个有趣的方法,谢谢。可重现文档的另一种解决方案是在 Word 中使用带有 SAR 宏 stata.com/meeting/italy11/abstracts/italy11_lo_magno.pdf 的 Stata
    • 我想是的。没有考虑口味......
    • @JoanneDemmler Joanne,请发表您的评论作为答案。差点错过了。而且似乎 Haghish 的解决方案(正在积极开发中)将是最接近 `knitr' Stat 所能得到的东西。
    【解决方案3】:

    SPSS(和我认为是 SAS)由于需要将所有内容写入磁盘而产生了一些开销,这使得一次编译的吸引力降低了。与 Yick 提到的类似,SPSS 有一个输出系统,可以编写自动报告开始并导出为 HTML、PDF 或 Word。这不是最简单的事情,但它是可能的,并且定期推出简化自动编辑(主要通过 Python 脚本)的附加功能。

    基本上我现在使用 SPSS 和 R 编写的自动化报告都有 html shell。然后,代码只需更新或插入所需的表格和图表。它们是完全独立的、可重复的,并且在每周或每月的计时器上运行,无需人工干预。他们只是没有准确定义表格生成方式的内联代码块(您必须稍微追溯代码才能弄清楚 - 但这并不是太繁琐的 IMO)。

    因为 SPSS 允许您从 Python 命令提示符运行 SPSS 代码,所以理论上您可以使用调用 SPSS 的 Python 代码编写文档。我不太确定我是否看到了与在单独的地方拥有更多分段代码相比的优势。您真的想阅读以 SQL 查询开头的 100 行 SPSS 代码,进行一些转换并生成表格和图形吗?你不想看表格和图表,然后如果对细节感兴趣,请返回查看准备所有数据的DataPrep.sps,然后查看Table1.spsFigure1.sps 等以了解它们各自的情况究竟生产出来的?

    【讨论】:

    • 我认为答案是,对于一个完全可重现的示例,您可能希望将代码包含到文档中,或者至少在完全相同的实例中生成输出。但我确实喜欢 Python-SPSS 界面的想法!
    • SPSS 的默认行为是在查看器的 Notes 对象中自动包含语法。 SPSS 还支持日志文件,该文件几乎可以捕获会话中完成的所有内容。 (SPSS 还包括 Java、R 和 .NET 接口)
    【解决方案4】:

    John Muschelli 向我指出了这个 Stata 程序:

    https://github.com/amarder/stata-tutorial/blob/master/knitr.do

    它解析一个包含 markdown 和 Stata 代码的 .domd 文件,并生成一个带有已执行 Stata 代码的 .md 文件。要解析的文件名在knitr.do文件的末尾。

    更具体地说:

    1. https://github.com/amarder/stata-tutorial/blob/master/knitr.do下载knitr.do文件

    2. https://github.com/amarder/stata-tutorial/blob/master/clustered-standard-errors.domd下载clustered-standard-errors.domd文件

    3. 将它们都保存在某个目录中。

    4. 修改knitr.do的最后一行以反映其目录的完整路径(例如 D:\Desktop\knit_example\clustered-standard-errors.domd

    5. 运行 knitr.do 以获取您的降价 (.md) 文件(以及一个中间 .md1 文件)。

    请注意,knitr.do 包含执行工作的程序和一行(最后一行):

    knit "whatever-file.domd"
    

    调用程序。

    所以你基本上写了一个包含 Markdown 语法和 Stata 命令的 .domd 文件[步骤(2)只是一个例子],运行 knitr.do 调整文件名,并得到一个带有执行 Stata 命令的 Markdown 文件。

    有几个注意事项:

    • 只允许使用单行 Stata 命令。例如,循环将不起作用。
    • “.domd”不能是文件名的一部分。
    • 如果 Stata 命令出错,用户不会收到返回码。
    • 如果用户在程序运行时点击Break按钮或出现Stata命令错误,则需要手动关闭文件句柄。

    【讨论】:

    • 我不太确定我是否了解我需要以什么顺序运行脚本以及如何修改它,但它看起来是正确的!谢谢
    • 我在回答中添加了一些细节。我希望他们有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2011-08-07
    • 1970-01-01
    • 2018-09-26
    • 2012-08-25
    • 2015-09-07
    • 2011-12-15
    相关资源
    最近更新 更多