2013-12-12 31 views
4

我是R markdown的忠實粉絲,發現它比編織LaTeX快速項目文檔(少於15頁)更容易。但是,我還需要支持其他統計軟件包(SPSS,Stata + SAS),並且想知道這些軟件的等效解決方案。在其他統計軟件包中的降價比R

在某種程度上,這可能會回到使用某種原始Noweb代碼+標記文件來編譯通過命令行。我想從R調用其他軟件包是另一種選擇。

我看過John Muschelli的這個例子:http://rpubs.com/muschellij2/3888,看起來好像他將Stata代碼編入R markdown文件。

您對這個主題有什麼想法?

我確實知道SASweaveStatWeave(後者明顯是壞的???),但認爲降價解決方案在我們的情況下更具優勢。

回答

4

約翰Muschelli向我指出這塔塔計劃:

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

它解析一個.domd文件,其中包含降價和Stata的代碼,並生成一個.md文件,執行Stata的代碼。要解析的文件的名稱位於knitr.do文件的末尾。

更多比較特別:

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

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

  3. 保存他們兩個下載clustered-standard-errors.domd文件中的某些目錄。

  4. 修改的knitr.do的最後一行,以反映其目錄的完整路徑(例如 d:\桌面\ knit_example \集羣標準,errors.domd

  5. 運行knitr.do讓你降價( .md)文件(和中間.md1文件)。

注意knitr.do包含所做的工作和線方案(最後一個):

knit "whatever-file.domd" 

調用該程序。

所以你基本上寫一個.domd文件[步驟(2)的文件只是一個例子],包含Markdown語法和Stata命令,運行knitr.do調整文件名,並獲得帶有執行Stata命令的Markdown文件。

有幾個注意事項:

  • 只有一個班輪的Stata命令是允許的。例如,循環將不起作用。
  • 「.domd」不能是文件名的一部分。
  • 如果Stata命令出現錯誤,用戶將得不到任何返回碼。
  • 如果用戶在程序運行時遇到Break按鈕或者存在Stata命令錯誤,則需要手動關閉文件句柄。
+0

我不太確定如果我明白我需要運行腳本以及如何修改它的順序,但它看起來是正確的!謝謝 –

+0

我已經添加了一些細節到我的答案。我希望他們幫助。 –

2

我不確定這是否是您想要的,但是如果您希望在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; 
+0

我實際上想要比ods設置更進一步,並在報告中包含大量其他輸入,即大量文本,圖像,引用(pandoc + latex)和從統計中獲取的單個數字表。結果應該是這樣http://support.sas.com/resources/papers/proceedings12/324-2012.pdf - 這是一個完全可重複和自包含的分析文件。優選地,所有不同統計數據包的方法應儘可能相似。 –

6

Stata的具有其自己的SMCL原木的註釋,所述M靜置加價。使用不同語言的主要原因是,在文檔沒有結束的情況下,即在交互式會話中,SMCL必須逐行創建和解釋。這是由Stata在您提出要求時自動創建的,可由用戶或程序員作爲調整Stata顯示選擇的一種方式進行規定。

與您的問題可能的聯繫是SMCL可以被翻譯成HTML,它可以打開各種門。所以,在Stata中很容易的事情就是做一些工作,在SMCL中保存log文件,然後將日誌文件轉換爲HTML。如果沒有進一步的工作,你不會得到任何好東西,但是進一步的工作很簡單,並且相當於按照你的方式做任何事情,但在你最喜歡的文本編輯器或文本處理器中,而不是在Stata中。

這可以通過log2html來簡化,Stata用戶可以使用ssc inst log2html進行安裝。它利用了Stata中沒有記錄的功能。

Stata的幫助文件也可以用相同的方式翻譯成HTML(但考慮到版權問題,如果在官方幫助文件中這樣做;這對您自己的幫助文件是公平的)。

+1

這是一個有趣的方法謝謝。另一種可重現文檔的解決方案是使用Word中的Stata和SAR宏http://www.stata.com/meeting/italy11/abstracts/italy11_lo_magno.pdf –

+0

我想是的。沒有味道的會計...... –

+0

@JoanneDemmler喬安妮,請張貼您的評論作爲答案。幾乎錯過了它。看起來Haghish的解決方案(正在積極開發)將成爲Stat'可以獲得的'knitr'最接近的解決方案。 – radek

1

由於需要將所有內容寫入磁盤,SPSS(以及SAS I所假設)有一定的開銷,這使得編譯一舉減少了吸引力。與Yick提到的類似,SPSS具有一個輸出系統,可以編寫自動報告並開始輸出爲HTML或PDF或Word。讓它看起來不錯是最容易的事情,但它可能並且可以添加以減輕自動編輯(主要通過Python腳本)正在定期推出。

基本上我現在用SPSS和R編寫的自動化報告有html shell。代碼然後只是更新或插入所需的表和圖形。它們完全獨立,可重複,並且可在每週或每月的定時器上運行,無需人工干預。他們只是沒有內聯代碼塊來精確定義表格的生成方式(你必須稍微追溯代碼才能找出結果 - 但這並不是太麻煩)。

由於SPSS允許您從Python命令提示符運行SPSS代碼,因此理論上可以使用調用SPSS的Python代碼編寫文檔。我不太確定我是否看到了這個優勢,但是在分開的位置有更多的分段代碼。你真的想讀取以SQL查詢開頭的100行SPSS代碼,做一些轉換並生成一張表格和一張圖表嗎?難道你不願意看到表格和圖表,然後如果對本質感興趣可以回頭看看準備好所有數據的DataPrep.sps,然後看Table1.spsFigure1.sps等等,看看它們是如何準確產生的?

+0

我認爲答案是,對於完全可重現的示例,您希望將代碼包含到文檔中,或者至少在完全相同的實例中生成輸出。但我確實喜歡Python-SPSS接口的想法! –

+0

SPSS的默認行爲是在查看器中的Notes對象中自動包含語法。 SPSS還支持日誌文件,可以捕獲會話中幾乎所有的事情。 (SPSS還包含Java,R和.NET接口) – JKP

相關問題