2016-08-01 23 views
-2

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

+0

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. –

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