4

これは、出版物やレポートに Stata を使用しているすべての人が遭遇した問題であると確信しています。

出力をスクリプト言語や Excel で解析できるものに簡単にエクスポートするにはどうすればよいでしょうか?

ado特定のコマンドに対してこれを行うファイルがいくつかあります。例えば:

  • findit tabout
  • findit outreg2

tableしかし、コマンドの出力をエクスポートするのはどうでしょうか? またはの結果anova

Stata ユーザーが特定のコマンドまたは一般的にこの問題にどのように対処しているかを知りたいです。

4

7 に答える 7

8

これをしばらく試した後、自分に合った解決策を見つけました。

特定の関数のエクスポートを処理するさまざまな ADO があります。outreg2回帰とtabout要約統計に利用しました。

より単純なコマンドの場合、結果を標準形式のプレーンテキストに自動的に保存する独自のプログラムを簡単に作成できます。ここに私が書いたいくつかがあります...これらは両方とも結果を表示し(ログファイルに保存するため)、それらをテキストファイルにエクスポートすることに注意しdiquiくださいsumtabなどのコマンド:

cap program drop sumout
program define sumout
    di ""
    di ""
    di "Summary of `1'"
    di ""
    sum `1', d
    qui matrix X = (r(mean), r(sd), r(p50), r(min), r(max))
    qui matrix colnames X = mean sd median min max
    qui mat2txt, matrix(X) saving("`2'") replace
end

cap program drop tab2_chi_out
program define tab2_chi_out
    di ""
    di ""
    di "Tabulation of `1' and `2'"
    di ""
    tab `1' `2', chi2
    qui matrix X = (r(p), r(chi2))
    qui matrix colnames X = chi2p chi2
    qui mat2txt, matrix(X) saving("`3'") replace
end


cap program drop oneway_out
program define oneway_out
    di ""
    di ""
    di "Oneway anova with dv = `1' and iv = `2'"
    di ""
    oneway `1' `2'
    qui matrix X = (r(F), r(df_r), r(df_m), Ftail(r(df_m), r(df_r), r(F)))
    qui matrix colnames X = anova_between_groups_F within_groups_df between_groups_df P
    qui mat2txt, matrix(X) saving("`3'") replace
end

cap program drop anova_out
program define anova_out
    di ""
    di ""
    di "Anova command: anova `1'"
    di ""
    anova `1'
    qui matrix X = (e(F), e(df_r), e(df_m), Ftail(e(df_m), e(df_r), e(F)), e(r2_a))
    qui matrix colnames X = anova_between_groups_F within_groups_df between_groups_df P RsquaredAdj
    qui mat2txt, matrix(X) saving("`2'") replace
end

問題は、出力をExcelに取得してフォーマットする方法です。テキスト出力ファイルを Stata から Excel にインポートする最善の方法は、それらを 1 つの大きなテキスト ファイルに連結し、Excel の機能を使用してその単一のファイルをインポートすることですImport Text File...

この Ruby コードを出力フォルダーに配置し、次のように Do ファイルから int を実行して、ファイルを連結しますqui shell cd path/to/output/folder/ && ruby table.rb

output = ""
Dir.new(".").entries.each do |file|
  next if file =~/\A\./ || file == "table.rb" || file == "out.txt"
  if file =~ /.*xml/
    system "rm #{file}"
    next
  end

  contents = File.open(file, "rb").read

  output << "\n\n#{file}\n\n" << contents
end


File.open("out.txt", 'w') {|f| f.write(output)}

out.txtExcel の独自のシートにインポートしたら、Excel の組み込み関数の束を使用して、データをまとめて見栄えの良いテーブルにまとめます。

これを行うには、、、、、および非表示の列とセル番号およびファイル名を組み合わせて使用​​しvlookupます。ソース .txt ファイルはそのファイルの内容のすぐ上に含まれているため、これらの関数を使用してファイルの内容を検索し、 および を使用して特定のセルを参照できます。offsetmatchiferrorout.txtvlookupoffset

この Excel ビジネスは実際にはこのシステムの最も複雑な部分であり、ファイルを見せずに説明するのは本当に良い方法ではありませんが、うまくいけば、自分でそれを理解するのに十分なアイデアを得ることができます. そうでない場合は、 http://maxmasnick.comからお気軽にお問い合わせください。詳細情報を入手できます。

于 2010-03-23T15:49:57.257 に答える
7

estoutパッケージが最も開発されており、優れたドキュメントがあることがわかりました。

于 2010-02-07T01:44:28.330 に答える
3

ほとんどのチュートリアルでは、すべてをエクスポートするのが1つだけであると非常に便利ないくつかのパッケージがスローされます。これは、Maxが興味深い方法で上記で提案したことです。

私は個人的taboutに要約統計量と頻度、回帰出力に使用し、相関行列をestout試しています。mkcorr

于 2011-12-06T06:19:05.223 に答える
1

しばらく経ちましたが、ログ コマンドを発行して出力を取得できると思います。
log using c:\data\anova_analysis.log, text
[commands]
log close

于 2010-02-05T19:27:09.427 に答える
1

私は estpost (estout パッケージの一部) を使用して、推定以外のコマンドからの結果を集計します。その後、それらを保存して簡単にエクスポートできます。

次に例を示します。

estpost corr varA varB varC varD, matrix
est store corrs
esttab corrs using corrs.rtf, replace 

その後、書式設定などを変更するオプションを追加できます。

于 2014-06-26T12:37:58.310 に答える