/ / Stata: Kombinieren Sie mehrere Variablen zu einer - Variablen, Stack, Kombinationen, Stata

Stata: Kombiniere mehrere Variablen zu einem - Variablen, Stapel, Kombinationen, Stata

Ich habe ein Problem in Stata. Ich möchte mehrere Variablen zu einer kombinieren. Meine Daten sehen wie folgt aus (vereinfacht):

ID a b c
1  x . .
2  y . .
3  . z .
4  . w .
5  . . u

Jetzt möchte ich eine neue Variable generieren d bestehend aus allen Werten von Variablen a, b und c, so dass d hat keine fehlenden Werte:

ID a b c d
1  x . . x
2  y . . y
3  . z . z
4  . w . w
5  . . u u

Ich habe versucht, den Befehl zu verwenden stack a b c, into(d) Dann gibt mir Stata eine Warnung, dass Daten verloren gehen und was von meinen Daten übrig bleibt, ist nur die gestapelte Variable und sonst nichts. Gibt es eine andere Möglichkeit, dies zu tun, ohne die Variablen umzubenennen? a, b und c?

Mein Datensatz enthält etwa 90 dieser Variablen, die ich zu einer einzigen Variablen kombinieren möchte. Möglicherweise gibt es dafür einen effizienten Weg.

Antworten:

2 für die Antwort № 1

Aus Ihrem Beispiel, das numerische Variablen und höchstens eine in jeder Beobachtung nicht fehlende Variable impliziert, egen"s rowmax() Funktion ist alles was Sie brauchen.

egen d = rowmax(a b c)

2 für die Antwort № 2

Sie können die Variablen durchlaufen und dieneue Variablen zu den nichtfehlenden Werten der anderen Variablen. Dies setzt voraus, dass Ihre Variablen Strings sind. Die Lösung von Nick funktioniert besser für numerische Variablen.

clear
input ID str5(a b c)
1  x "" ""
2  y "" ""
3  "" z ""
4  "" w ""
5  "" "" u
end
gen d=""
foreach v of varlist a-c {
replace d=`v" if mi(d)
}
li

1 für die Antwort № 3

Sie könnten ähnlich verwenden stack wie du warst, während du das spezifizierst wide Möglichkeit:

clear
input ID str5(a b c)
1  x "" ""
2  y "" ""
3  "" z ""
4  "" w ""
5  "" "" u
end

stack a b c, into(d) wide clear
keep if !mi(d)