Seite 1 von 1

Replace von Missings

BeitragVerfasst: Mi 13. Nov 2013, 13:44
von Tiia
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!!!

Re: Replace von Missings

BeitragVerfasst: Mi 13. Nov 2013, 16:35
von daniel
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?

Re: Replace von Missings

BeitragVerfasst: Mi 13. Nov 2013, 19:34
von Tiia
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

Re: Replace von Missings

BeitragVerfasst: Do 14. Nov 2013, 12:02
von daniel
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.

Re: Replace von Missings

BeitragVerfasst: Do 14. Nov 2013, 13:22
von Tiia
Vielen, vielen Dank! Das klappt super und ich glaub ich hab das mit dem Unterschied zwischen by und bys nun auch verstanden. ;)