Replace von Missings

Fragen zu Stata Syntax und Do-Files.

Replace von Missings

Beitragvon Tiia » Mi 13. Nov 2013, 13:44

Hallo zusammen,

ich habe eine kleine Frage. Ich habe eine Variable (time) welche mir Zeitpunkte angibt, zu denen ich Beobachtungen haben. Diese Beobachtungen (Round) sind aber nicht zu jedem Zeitpunkt identisch weil ich im Panel nicht immer die gleichen Personen (ID) beobachten kann.

Da ich besonderes Interesse an bestimmten Personen habe, habe ich mit gen Round1 = Round if ID == "1" usw. eigene Variablen generieren lassen. Die anderen Zellen werden logischerweise mit Missings "gefüllt". Nun möchte ich diese (für jeden Zeitpunkt "time") aber füllen lassen (das hat etwas mit späteren Berechnungen zu tun). Mir ist klar, dass ich mit bys Time : replace Round1 = Round1[_n+1] if Round1 == . das machen könnte, aber da die Anzahl der Leerzellen über oder unter dem Wert stark variieren kann, bin ich auf der Suche nach einem Befehl der "einfach" innerhalb eines Zeitpunktes die Missings mit dem Wert füllt, der bei der jeweiligen Variable angeben ist.

Ich hoffe es kann mir jemand einen Tipp geben. Vielen Dank bereits!!!
Dateianhänge
Test.dta
(1.47 KiB) 235-mal heruntergeladen
Tiia
 
Beiträge: 10
Registriert: Sa 24. Aug 2013, 18:13
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Replace von Missings

Beitragvon daniel » Mi 13. Nov 2013, 16:35

Da ich besonderes Interesse an bestimmten Personen habe, habe ich mit gen Round1 = Round if ID == "1" usw. eigene Variablen generieren lassen.


Das geht auch mit -separate-, aber das nur als Hinweis nebenbei.

Ansonsten ist mir nicht klar, was genau Du willst. Kannst Du in dem Beispieldatensatz mal eine variable per Hand erstellen, die vernschaulicht, wie genau Du Dir das vorstellst und wesshalb Deine Lösung nicht funktioniert?
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: Replace von Missings

Beitragvon Tiia » Mi 13. Nov 2013, 19:34

Guten Abend.

Funktionieren würde dieser Weg - aber in Abhängigkeit von der Position des vorhandenen Wertes bräuchte ich unterschiedliche Befehle und in dem Minisatz kann ich die "Höchstwerte" noch gut ablesen... aber nicht mehr im Originalsatz :(

Wenn ich möchte, dass es abschließend genau so ausschaut wie in Round3, dann würde ich für die Round2 schreiben müssen:

bys Time : replace Round2 = Round2[_n-1] if Round2 == .
bys Time : replace Round2 = Round2[_n+3] if Round2 == .
bys Time : replace Round2 = Round2[_n+1] if Round2 == .

Und bei der Round1 würde aber reichen:

bys Time : replace Round1 = Round1[_n-1] if Round1 == .

Daher würde ich hoffe, dass es eine Möglichkeit gäbe das einerseits eleganter und vor allem weniger fehleranfällig zu lösen.

Gruß Tiia
Dateianhänge
Test.dta
(1.54 KiB) 237-mal heruntergeladen
Tiia
 
Beiträge: 10
Registriert: Sa 24. Aug 2013, 18:13
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Replace von Missings

Beitragvon daniel » Do 14. Nov 2013, 12:02

Tiia,

-by- erlaubt eine variablenliste und wichtiger, -bys- erlaubt das Sortieren innerhlab von Gruppen.

Code: Alles auswählen
bys Time (Round2) : replace Round2 = Round2[_n - 1] if (_n > 1)


Achte auf die Klammersetzung und schau unter -help bys- nach einer ausführlichen Erklärung.
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: Replace von Missings

Beitragvon Tiia » Do 14. Nov 2013, 13:22

Vielen, vielen Dank! Das klappt super und ich glaub ich hab das mit dem Unterschied zwischen by und bys nun auch verstanden. ;)
Tiia
 
Beiträge: 10
Registriert: Sa 24. Aug 2013, 18:13
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Stata Syntax

Wer ist online?

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