Hallo SG,
auch wenn die Anfrage nun etwas zurückliegt (Verzeihung für die sehr späte Antwort), habe ich hier noch eine Syntax, die dir eventuell bei der Aufklärung der Fälle helfen kann. Hier werden alle erreichten Studienabschlüsse, die eine Person erlangt hat, mit Enddatum in einem Datensatz zusammengefügt und dann im Anschluss an den spEmp-File gemerged.
** Erreichte Studienabschlüsse mit Zeitpunkt und Fach
/*******************************************************************************
** Mit dieser Syntax wird ein Datensatz generiert, in dem die erreichten
Studienabschlüsse aus dem spVocTrain und dem spVocExtExam mit dem Biography-Datensatz
zusammengebracht werden. So wird komprimiert dargestellt, welcher Abschluss zu welchem
Zeitpunkt und in welchem Fach erreicht wurde. Der Datensatz wird so aufbereitet,
dass er über ID_t wave splink an andere spell-files gemerged werden kann.
An einigen Stellen werden Episoden entfernt. Die Stellen sind über “//…” kommentiert
*******************************************************************************/
** Globals definieren
*Dateipfade
global dta “Dateipfad”
*weitere globals
global suf “SUF-Version”
** Vorbereitungen: Entfernung andauernder und nicht erfolgreicher Spells
** Auswahl der relevanten Informationen in spVocTrain (hier nur Studienbezogen)
local keeplist ID_t ID_i wave splink spell subspell h_aktstu tg01003_ha ts15218 ///
t724401 ts15219 ts15219_g1 ts15219_v1 tg24170_g1R tg24170_g2 tg24170_g3R tg24170_g4R tg24170_g5 ///
tg24160_g1R tg24160_g2 tg24160_g3R tg24160_g4R tg24160_g5 ts15201 ts1511* ts1512*
use `keeplist’ using ${dta}/SC5_spVocTrain_D_${suf}.dta, clear
drop if subspell > 0 //andauernde Ausbildungsepisoden entfernen
keep if ts15218==1 //nur erfolgreiche abgeschlossene Episoden behalten
** temporär speichern
tempfile spVocTrain
save `spVocTrain’, replace
** Externe Prüfungsabschlüsse:
use ${dta}/SC5_spVocExtExam_D_${suf}.dta, clear
keep ID_t ts1530y ts1530m ts15304* wave exam //nur Abschlussinformationen behalten
** Rekodieren der Jahreszeitenangaben:
replace ts1530m = 1 if ts1530m == 21
replace ts1530m = 4 if ts1530m == 24
replace ts1530m = 7 if ts1530m == 27
replace ts1530m = 10 if ts1530m == 30
replace ts1530m = 12 if ts1530m == 32
replace ts1530m = 7 if inlist(ts1530m,-98,-97)
drop if !inrange(ts1530m,0,12) | !inrange(ts1530y,1950,2018) //Episoden ohne gültige Zeitangaben entfernen
** splink generieren für append und späteren merge an andere spell-files
gen splink=exam+400000
** Vorbereiten für append:
** spelltype bilden
gen sptype = 40
** umbenennen (analog zu Namen im Biography)
rename ts1530m endm
rename ts1530y endy
** temporär speichern
tempfile spVocExtExam
save `spVocExtExam’, replace
** Mit Biography zusammen bringen
use ${dta}/SC5_Biography_D_${suf}.dta, clear
keep if sptype==24 //nur Ausbildungsepisoden behalten
** spVocTrain mergen
merge 1:1 ID_t splink using `spVocTrain’, nogen keep(1 3)
** Externenprüfungsabschlüsse anhängen
append using `spVocExtExam’
la def SPTYPE 40 “VocExtExam”, modify
sort ID_t endy endm
preserve
** spEmp anpassen
use ${dta}/SC5_spEmp_D_${suf}.dta, clear
keep if subspell==0
tempfile spEmp
save `spEmp’
** An sp-Emp-File mergen
restore
merge 1:1 ID_t wave splink using `spEmp’, nogen noreport
sort ID_t endy endm
Ich hoffe, die Syntax hilft weiter, falls sich das Problem nicht schon mittlerweile behoben hat.
Viele Grüße
Isabelle