Hallo Sabine!
Der Basics-Datensatz sollte nicht für Analysen verwendet werden - er werden nur die letztgültigen Werte in diesen Datensatz geschrieben - man kann aber nicht sagen, aus welcher Welle die Angaben stammen.
Wenn man wissen will, wann das Studium begonnen hat, kann man den StudyStates-Datensatz öffnen und sich eine dichotome Variable bilden, die angibt, ob die Zielperson in dieser Welle studiert hat. Dann kann man den Datensatz so sortieren, dass man die Welle des ersten Studienbeginns erhält. Wenn man einfach nur das Datum der ersten Welle heranzieht, ist das falsch, da manche Befragte dann doch nicht in der ersten Welle studieren.
Jetzt kann man noch mit dem Interviewdatum aus CohortProfile und dem Geburtsdatum aus pTargetCATI das Alter selbst konstruieren und mit der Variable tx29000 vergleichen.
Wenn man jetzt selektiert, ob man den Mittelwert des Alters für die letzte Welle oder für die Welle des Studienbeginns betrachten will, ändert sich bei tx29000 nichts. Bei der selbst konstruierten Variable sinkt das Alter von 27,8 Jahre auf 22,1 Jahre.
Kurzgefasst: das was im Basics steht, ist zur groben Orientierung gut, aber es können keine konkreten Zeitbezüge hergestellt werden.
Viele Grüße
Dietmar
use "SC5_StudyStates_D_18-0-0.dta", clear
keep if tx24000 == 1
keep ID_t wave tx24001 tx24100 tx24101
generate study_yesno = 0 if inlist(tx24100,1,2) & !inlist(tx24101,2,3,4)
replace study_yesno = 0 if (inlist(tx24100,-54,-20) & tx24101 ==1 )
replace study_yesno = 1 if (tx24100 == 0 & tx24101 != 1)
replace study_yesno = 1 if (inlist(tx24100,-54,-20) & inlist(tx24101,2,3,4,.))
replace study_yesno = -54 if tx24101 == -54 & tx24100 == -54
replace study_yesno = -55 if missing(study_yesno)
label define yesno 0"yes" 1"no" -55"nicht ermittelbar" -54"designbedingt fehlend"
label values study_yesno yesno
nepsmiss study_yesno
keep ID_t wave tx24001 study_yesno
bysort ID_t (study_yesno tx24001 ): egen min_wave = min(tx24001) if study_yesno == 0
keep if min_wave == tx24001
isid ID_t
rename wave wave_firststudy
keep ID_t wave_firststudy
tempfile states
save "`states'", replace
***********************************************
use "SC5_Basics_D_18-0-0.dta", clear
nepsmiss tx29000
sum tx29000
generate birthdate_basics = ym(t70000y,t70000m)
keep if !missing(birthdate_basics)
format birthdate_basics %tm
keep ID_t tx29000 birthdate_basics
tempfile basics
save "`basics'", replace
***********************************************
use "SC5_CohortProfile_D_18-0-0.dta", clear
keep if tx80521 == 1
generate intdate_cp = ym(tx8600y,tx8600m)
format intdate_cp %tm
keep ID_t wave intdate_cp
keep if !missing(intdate_cp)
tempfile cp
save "`cp'", replace
***********************************************
use "SC5_pTargetCATI_D_18-0-0.dta", clear
replace t70000m = 7 if missing(t70000m)
generate birthdate_cati = ym(t70000y,t70000m)
format birthdate_cati %tm
keep ID_t wave birthdate_cati
tempfile cati
save "`cati'", replace
***********************************************
use "`cp'", clear
merge m:1 ID_t using "`states'", keep(matched) nogenerate
merge 1:1 ID_t wave using "`cati'", keep(matched) nogenerate
merge m:1 ID_t using "`basics'", gen(merge_caticp_basics)
generate age_cpcati = (intdate_cp - birthdate_cati) / 12
bysort ID_t: egen wave_max = max(wave)
sum age* tx29000 if wave == wave_max
sum age* tx29000 if wave == wave_firststudy
. sum age* tx29000 if wave == wave_max
Variable | Obs Mean Std. dev. Min Max
-------------+---------------------------------------------------------
age_cpcati | 17,099 27.78249 5.413682 17.41667 99.25
tx29000 | 17,909 28.93903 5.434575 18.17 99.75
. sum age* tx29000 if wave == wave_firststudy
Variable | Obs Mean Std. dev. Min Max
-------------+---------------------------------------------------------
age_cpcati | 16,331 22.05858 3.851797 13.83333 65
tx29000 | 17,137 28.93085 5.458723 18.17 99.75