Ich verwende Stata13 auf Windows 7. Ich habe einen Datensatz mit wiederholten Beobachtungen von age
und educ
in einer Reihe für jede id
. d. h. Variablen q9p1educ
und q9p1age
ist die Bildung und Alter für person1, q9p2educ
und q9p2age
ist die Ausbildung und Alter für Person2 usw. Ich möchte das Bildungsniveau der Person mit dem höchsten Alter extrahieren. Ich habe es geschafft, das maximale Alter maxage
mit zu extrahieren. Wie kann ich die Ausbildung der Person mit dem maximalen Alter bekommen? Die Beispieldaten ist hereGeneriere eine neue Variable aus Zeilenbedingungen in Stata
-2
A
Antwort
0
würde ich durch Umformen Ihre Daten in Langformat starten
reshape long [email protected] [email protected], i(id maxage) j(pid) string
Dann die Antwort hängt davon ab, Was wollen Sie tun, wenn die maxage nicht eindeutig ist. Vielleicht könntest du so etwas wie Durchschnitt machen?
bysort id (age): gen temp=q9educ if age==maxage
bysort id: egen educmaxage=mean(temp)
drop temp
Dann, wenn Sie es wieder weit wollen, könnten Sie einfach weit umformen.
reshape wide [email protected] [email protected], i(id maxage educmaxage) j(pid) string
+0
dieser Code auch nach einem Gedanken 'foreach var von varlist q9p1age- q9p9age half { wenn maxage ==' var '{ \t lokalen x = substr ("' var'", 1,4) \t lokalen edu =" 'x'edu“ \t ersetzen maxEduc = 'edu‘ \t \t} \t } ' – Keniajin
Bitte studieren Sie http://StackOverflow.com/Help/Mcve, um Kriterien für eine gute Frage zu sehen, einschließlich des Versuchs nach Code und eigenständiger Reproduzierbarkeit. –