Domanda

Sono sicuro che questo è un problema di tutti coloro che usa Stata per pubblicazioni o rapporti ha eseguito in:

Come si fa comodamente esportare l'output a qualcosa che può essere analizzato da un linguaggio di scripting o Excel?

Ci sono alcuni file ado che fanno questo per i comandi specifici. Ad esempio:

  • findit tabout
  • findit outreg2

Ma per quanto riguarda l'esportazione l'output del comando table? O il risultato di un anova?

Mi piacerebbe sentir parlare di come gli utenti Stata affrontare questo problema sia per i comandi specifici o in generale.

È stato utile?

Soluzione

Questa è una vecchia questione e molto è accaduto da quando è stato pubblicato.

Stata la società ha diversi comandi e funzioni che permettono a chiunque di built-in Uscita su misura esportazione abbastanza facilmente:

Ci sono anche equivalenti funzioni Mata / classi, che offrono una maggiore flessibilità:

Dalla mia esperienza, non ci sono soluzioni generali al 100%. comandi comunità contribuito, come estout sono ora abbastanza maturo per gestire la maggior parte operazioni di base. Detto questo, se avete qualcosa che si discosta anche leggermente dal modello si dovrà programmare da soli.

Altri suggerimenti

Dopo aver sperimentato questo per un po ', ho trovato una soluzione che funziona per me.

Ci sono una varietà di organizzazioni antidoping che gestiscono l'esportazione di funzioni specifiche. Ho fatto uso di outreg2 per regressioni e tabout per le statistiche di riepilogo.

Per i comandi più semplici, è facile scrivere i propri programmi per salvare i risultati automaticamente in testo in chiaro in un formato standard. Qui ci sono alcuni che ho scritto ... notare che questi due risultati di visualizzazione (per essere salvati in un file di log) ed esportarli in file di testo - se si voleva salvare solo al testo si potrebbe sbarazzarsi di del di e qui il sum , tab, ecc comandi:

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

Il problema è quindi come ottenere l'output in Excel e formattarlo. Ho trovato che il modo migliore per importare i file di output di testo da Stata in Excel è quello di concatenare in un unico file di testo grandi e quindi importare il file singolo utilizzando la funzione Import Text File... in Excel.

I concatenare i file inserendo questo codice Ruby nella cartella di output e quindi eseguire int dal mio Do depositare presso 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)}

Una volta ho importare out.txt nel proprio foglio in Excel, io uso un sacco di funzioni built-in di Excel per estrarre i dati insieme in piacevoli, tavoli belle.

Io uso una combinazione di vlookup, offset, match, iferror, e le colonne nascoste, con il numero di cellule e nomi di file per fare questo. Il file sorgente txt è incluso nel out.txt appena sopra il contenuto di quel file, che consente di cercare il contenuto del file usando queste funzioni e quindi fare riferimento cellule specifiche che utilizzano vlookup e offset.

Questo business Excel è in realtà la parte più complicata di questo sistema e non c'è davvero nessun buon modo per spiegare senza che vi mostra il file, anche se si spera si può ottenere abbastanza di un'idea per capirlo da soli. In caso contrario, non esitate a contattarmi attraverso http://maxmasnick.com e posso ottenere più informazioni.

Ho trovato che il estout pacchetto è la più sviluppata e ha una buona documentazione.

La maggior parte delle esercitazioni gettare diversi pacchetti dove sarebbe davvero bello avere un solo l'esportazione di tutto ciò, che è quello che Max suggerisce sopra con il suo metodo interessante.

Io personalmente uso tabout per statistiche riassuntive e frequenze, estout per l'output della regressione, e sto provando mkcorr per matrici di correlazione.

E 'stato un po', ma io credo che si possa emettere un comando di registro per catturare l'uscita.
log using c:\data\anova_analysis.log, text
[commands]
log close

Io uso una parte estpost-- del estout package-- per tabulare i risultati di comandi non-stima. È quindi possibile memorizzarli ed esportare facilmente.

Ecco un esempio:

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

È possibile aggiungere opzioni per modificare la formattazione, ecc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top