Also strukturtechnisch sind alle 3 Datensätze im long-format, sortiert nach pid und svyyear. Ein Pfad-Datensatz, in dem grundlegende Informationen enthalten sind z.B. sex, gebjahr, parid, partner (Art der Partnerschaft); ein Datensatz mit Variablen, die vom DIW selbst gebildet wurden und ein Datensatz, der die Variablen aus den Fragen des Fragebogens enthält z.B. Gesundheit, Bildung etc.
"Gemerget" hab ich die drei dann so:
- Code: Alles auswählen
clear
use $path2\ppfadl_neu.dta
merge pid svyyear using $path2\pgen_neu.dta $path2\pl_neu.dta
drop if _merge != 3
drop _m*
Ok, zu beschreiben, wie ich die neue_Bez Variable gebildet habe, ist wiiiirklich schwierig, weil ich es eigentlich nur anhand der Daten erklären kann...
Schlussendlich musste ich die Variable neue-bez in 2 Schritten bilden.
Erst hab ich eine generelle Partnerschaftsvariable gebildet, da die bestehenden Partnerschaftsvariablen oft etwas widersprüchlich bzw. nicht eindeutig waren waren, was wohl daran liegt, dass ich mit einer Beta-Version arbeiten muss. Die von mir gebildete Variable hat folgende Ausprägungen :
* 0 kein Partner, geschieden, verheiratet getrennt, verwitwet
* 1 fester Partner, aber nicht im Datensatz
* 2 fester Partner, der im Datensatz ist
* 3 Ehepartner, der im Datensatz ist
und wurde so gebildet:
- Code: Alles auswählen
gen partnerschaft=99
replace partnerschaft=0 if p0572==2 | partner==0 & p0572<=-1 | partner==0 & p0572==. | partner==-1 & p0572<0 & pgfamstd==3
replace partnerschaft=1 if p0572==1 & parid==-2
replace partnerschaft=2 if parid!=-2 & partner==2 | parid!=-2 & p0572==1
replace partnerschaft=3 if parid!=-2 & partner==1 | partner>=3 & pgfamstd==1
Das Problem ist eigentlich, dass ich die Unterscheidung "im Datensatz/nicht im Datensatz" einzig und allein anhand dessen getroffen habe,
ob eine parid vorliegt oder nicht. Leider habe ich aber nicht überprüft, ob die Person mit der parid auch im Datensatz ist
Dieser Fehler hat sich dann in die Bildung der neue_bez Variablen übertragen, die schlicht so gebildet wurde:
- Code: Alles auswählen
gen neue_bez=0
bysort pid: replace neue_bez=1 if partnerschaft==1 & partnerschaft[_n-1]==0
bysort pid: replace neue_bez=2 if partnerschaft==2 & partnerschaft[_n-1]==0 | partnerschaft==3 & partnerschaft[_n-1]==0
Mein Problem ist jetzt also, dass ich irgendwie überprüfen muss, ob die Person, die bei ihrem Partner mit parid angegeben wurde, auch wirklich im Datensatz ist und wenn nicht, muss die parid halt ein Missing enthalten...