Spezielle Tabelle generieren / Tabelle Reshapen

Deskriptive Statistiken mit Stata.

Spezielle Tabelle generieren / Tabelle Reshapen

Beitragvon dilling » Di 5. Mär 2013, 20:18

Hallo,

damit ihr gleich seht worauf ich hinauswill, ist hier ein Beispiel mit dem gewünschten Output:

...........................Mean Mean Median Median Mean Median
Variable 1 ............... xx xx xx xx xx xx
Variable 2 ............... xx xx xx xx xx xx
Variable 3 ............... xx xx xx xx xx xx
Year..................... 1900 2000 1900 2000 Total Total

mir ist klar dass die Lösung sehr einfach wäre, falls ich NICHT noch nach "Year" unterteilen würde. (die Reihenfolge ob zuerst Mean / Median etc. in Row1 kommt ist nachrangig)

tabstat Variable1 Variable2 Variable3 , by(year) stat(mean median) nototal long col(stat) liefert mir z.B. alle notwendigen Zahlen jedoch sieht die Tabelle nicht so aus wie ich sie oben beschrieben habe.

Weiss jemand wie man das macht anhand des Beispieles?

Vielen Dank schonmal!

ps: die .... dienen nur der übersichtlicheren darstellung ;)
dilling
 
Beiträge: 15
Registriert: Do 7. Feb 2013, 22:19
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Spezielle Tabelle generieren / Tabelle Reshapen

Beitragvon daniel » Mi 6. Mär 2013, 00:12

Vorweg, ich schätze, es gibt da keine vorgefertigte Lösung für Dein Problem, zumindest fällt mir auf Anhieb keine ein. Es ist vermutlich nötig, die einzelnen Werte zu sammeln und "von Hand" in einer Matrix anzuordnen.

Ob es sich lohnt, eine solchen Aufwand zu betreiben, ist m.E. fraglich. Du willst ja sicher diese Tabelle woanders haben als im Stata results window, oder? Demnach musst Du die Tabelle ohnehin exportieren, was u.U. relativ kompliziert werden kann (und mit -tabstat- m.W. ebenfalls unmöglich ist). Vielleicht wäre es leicher, die Werte einfach "abzuschreiben" und in Word (?) oder wo auch immer Du sie hinhaben willst anzuordnen? Falls Du mit LaTeX arbeitest, sieht das möglicher Weise anders aus.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Spezielle Tabelle generieren / Tabelle Reshapen

Beitragvon dilling » Mi 6. Mär 2013, 12:50

danke für die Antwort.
Ja ich bräuchte die Tabelle später in Word, würde aber so oder einen zwischenschritt über Excel machen. Problem ist nur, dass ich viele solcher Tabellen brauche und die teilweise 10 und mehr Variablen etc. enthalten d.h. alles manuell umzubaun wäre sehr aufwändig
dilling
 
Beiträge: 15
Registriert: Do 7. Feb 2013, 22:19
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Spezielle Tabelle generieren / Tabelle Reshapen

Beitragvon daniel » Mi 6. Mär 2013, 13:20

Ok, verstehe. Ich sehe zwar noch immer nciht ganz, wie der output nach Excel funktionieren soll, da hier das gleiche Problem besteh wie in Word, aber sei es drum.

Bevor man da was (gutes) schreiben kann, wäre es gut zu wissen, wie felxibel das sein soll. Ist die Spaltenanzahl und Ordnung immer gleich? Ist die Zeilenanzahl (i.e. Variablen) immer gleich? Sind es immer nur 2 Jahre? Sind es genau diese 2 Jahre, oder soll das flexibel sein?

Hier ein unflexibeles, ineffizientes Grundgerüst, das (fast) genau Deine Tabelle repliziert. Die Beschriftung "Total" kann m.W. nicht hinzugefügt werden, weil es sich hier um eine Zelle der Matrix handelt, in der ausschließlich nummerische Werte zugelassen sind.

Code: Alles auswählen
// set up 4 x 7 matrix
mat R = J(4, 7, .)
mat coln "" Mean Mean Median Median Mean Median
mat rown <variable1> <variable2> <variable3> Year

// fill matrix
mat R[4, 1] = 1900
mat R[4, 2] = 2000
mat R[4, 3] = 1900
mat R[4, 4] = 2000

loc i 0
foreach v in <variable1> <variable2> <variable3> {
   loc ++i
   qui su `v' if (<year> == 1900) ,d
   mat R[`i', 1] = r(mean)
   mat R[`i', 3] = r(p50)
   qui su `v' if (<year> == 2000) ,d
   mat R[`i', 2] = r(mean)
   mat R[`i', 4] = r(p50)
   qui su `v' if (inlist(<year>, 1900, 2000)) ,d
   mat R[`i', 5] = r(mean)
   mat R[`i', 6] = r(p50)
}


Ich würde den code wesentlich flexibler gestalten, aber dazu bedarf es Zeit, die mir momentan leider fehlt. Hoffe das hilft weiter.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Spezielle Tabelle generieren / Tabelle Reshapen

Beitragvon dilling » Mi 20. Mär 2013, 16:30

Danke für die sehr ausführliche und gute Antwort.

Ziel war es dass alles an der richtigen stelle ist und ich einfach nur copy paste nach excel machen muss ohne die columns / rows nochmal zu reshapen deswegen sind auch spaltenbreite etc in Stata egal.
dilling
 
Beiträge: 15
Registriert: Do 7. Feb 2013, 22:19
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Deskriptive Statistik

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron