Поэкспериментировав с этим некоторое время, я нашел решение, которое работает для меня.
Существует множество ADO, которые обрабатывают экспорт определенных функций. Я использовал outreg2
для регрессии и tabout
для сводной статистики.
Для более простых команд легко написать свои собственные программы для автоматического сохранения результатов в обычный текст в стандартном формате. Вот некоторые из них, которые я написал... обратите внимание, что они оба отображают результаты (для сохранения в файл журнала) и экспортируют их в текстовые файлы - если вы хотите просто сохранить в текст, вы можете избавиться от di
и qui
sum
, tab
и т. д. команды:
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 — объединить их в один большой текстовый файл, а затем импортировать этот единственный файл с помощью функции Import Text File...
в Excel.
Я объединяю файлы, помещая этот код Ruby в выходную папку, а затем запуская int из моего файла Do с 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.txt
на отдельный лист в Excel, я использую набор встроенных функций Excel, чтобы собрать данные в красивые таблицы.
Для этого я использую комбинацию vlookup
, offset
, match
, iferror
и скрытых столбцов с номерами ячеек и именами файлов. Исходный файл .txt включен в out.txt
прямо над содержимым этого файла, что позволяет просматривать содержимое файла с помощью этих функций, а затем ссылаться на определенные ячейки с помощью vlookup
и offset
.
Этот бизнес с Excel на самом деле является самой сложной частью этой системы, и действительно нет хорошего способа объяснить это, не показывая вам файл, хотя, надеюсь, вы сможете получить достаточное представление, чтобы понять это самостоятельно. Если нет, свяжитесь со мной через http://maxmasnick.com, и я смогу предоставить вам дополнительную информацию.
person
Max Masnick
schedule
23.03.2010