我是R markdown
的忠实粉丝,发现它比编写LaTeX更快的项目文档(不到15页)更容易。然而,有时我还必须支持其他Statistics包(SPSS
、Stata
+SAS
),并想知道这些包的等效解决方案。
在某种程度上,这可能会回到使用某种原始Noweb
代码+markdown文件通过命令行进行编译。我想从R调用其他包是另一种选择。
我看过John Muschelli的这个例子:http://rpubs.com/muschellij2/3888看起来好像他把Stata代码编织成了一个R标记文件。
有人能提供具体的例子说明如何在Stata、SAS或SPSS中做到这一点吗?
我确实知道SASweave
和StatWeave
(后者显然坏了???),但我认为在我们的情况下,降价解决方案会更有优势
Stata有自己的SMCL用于日志注释,M代表标记。使用不同语言的主要原因是,在看不到文件结尾的情况下,即在交互式会话中,必须逐行创建和解释SMCL。这是Stata在您要求时自动创建的注释,用户或程序员可以指定它作为调整Stata显示选项的一种方式。
与您的问题可能的联系是,SMCL可以翻译成HTML,这打开了各种各样的大门。因此,在Stata中很容易做一些工作,在SMCL中保留一个log
文件,然后将日志文件转换为HTML。如果没有进一步的工作,你不会得到任何真正好的东西,但进一步的工作很容易,相当于用任何方式做你想做的事情,但在你最喜欢的文本编辑器或文本处理器中,而不是在Stata中。
Stata用户可以使用ssc inst log2html
安装的log2html
使这一点变得更容易。它利用了Stata中未记录的功能。
Stata的帮助文件也可以用同样的方式翻译成HTML(但如果使用官方帮助文件,请考虑版权问题;使用自己的帮助文件是公平的)。
John Muschelli向我介绍了这个Stata程序:
https://github.com/amarder/stata-tutorial/blob/master/knitr.do
它解析一个包含markdown和Stata代码的.domd
文件,并生成一个包含已执行Stata代码在内的.md
文件。要解析的文件的名称位于knitr.do
文件的末尾。
更具体地说:
-
从下载
knitr.do
文件https://github.com/amarder/stata-tutorial/blob/master/knitr.do -
从下载
clustered-standard-errors.domd
文件https://github.com/amarder/stata-tutorial/blob/master/clustered-standard-errors.domd -
将它们都保存在某个目录中。
-
修改
knitr.do
的最后一行以反映其目录的完整路径(例如。D:\Desktop\knit_example\集群标准错误.domd -
运行
knitr.do
以获得markdown(.md
)文件(以及一个中间的.md1
文件)。
注意,knitr.do
包含执行工作的程序和一行(最后一行):
knit "whatever-file.domd"
调用程序。
因此,您基本上编写了一个包含Markdown语法和Stata命令的.domd
文件[步骤(2)的文件只是一个示例],运行knitr.do
调整文件名,并获得一个执行了Stata命令后的Markdown文件。
有几个注意事项:
- 只允许使用一个liner Stata命令。例如,循环不起作用
- ".dmd"不能是文件名的一部分
- 如果Stata命令出现错误,则用户不会得到返回代码
- 如果程序运行时用户点击Break按钮,或者出现Stata命令错误,则需要手动关闭文件句柄
我不确定这是否是您想要的,但如果您希望在SAS中创建包含统计报告的.html文件,那么您可以使用输出传递系统(ODS)。
语法示例为:
ods html file='pathofdirectoryfilename.html' <additional options>;
proc print... (SAS code that generates output)
proc means...
proc freq...
proc gchart...
proc gplot...
...
ods html close;
SPSS(我想还有SAS)需要将所有内容都写入磁盘,这会降低一次性编译的吸引力。与Yick提到的类似,SPSS有一个输出系统,可以从一开始就编写自动报告,并导出到HTML、PDF或Word。这不是最容易让人看起来好看的事情,但它是可能的,并且正在定期推出用于简化自动编辑(主要通过Python脚本)的附加功能。
基本上,我现在使用SPSS和R编写的自动化报告都有html外壳。然后,代码只更新或插入所需的表和图。它们是完全独立的、可复制的,并且在没有人为干预的情况下每周或每月运行。他们只是没有内联代码块来准确定义表是如何生成的(你必须稍微追溯代码才能弄清楚——但这并不太繁重)。
因为SPSS允许你从Python命令提示符下运行SPSS代码,所以理论上你可以用调用SPSS的Python代码编织一个文档。不过,我不太确定我是否看到了在不同的地方有更多分段代码的优势。你真的想阅读100行SPSS代码吗?这些代码从SQL查询开始,进行一些转换,生成一个表和一个图?你不想看看表格和图表,然后如果对细节感兴趣,回去看看准备所有数据的DataPrep.sps
,然后看看Table1.sps
和Figure1.sps
等,看看它们是如何产生的吗?