// Creates fnspid fnspno mnspid mnspno npns_dv pns1pno pns1pid pns1sex pns2pno pns2pid pns2sex. // INPUT FILE - w_egoalt.dta // OUTPUT FILE - w_pnspno.dta // WRITE FILEPATH WHERE YOU HAVE DOWNLOADED THE DATA global in "" // WRITE FILEPATH WHERE YOU WOULD LIKE TO SAVE THE OUTPUT FILE global outpath "" // 1 is for BHPS, 2 is for UKHLS global cohort "2" foreach w in a b c d e f g h i j k l { // INCLUDE WAVE LETTERS FOR THE WAVES NEEDED global wave "`w'_" global num=strpos("abcdefghijklmnopqrstuvwxyz","`w'") global dta "" global waveno=$num global inpath "${in}/bhps_w${num}" if $cohort==2 { global waveno=$num+18 global inpath "${in}/ukhls" } use "${inpath}/${wave}egoalt${dta}", clear /*-------------ORIGINAL CODE--------------*/ * Creates pointers to Nat/step/adopt parents preserve // FATHER clonevar ${wave}fnspid_=apidp if ((${wave}relationship_dv==4 | ${wave}relationship_dv==5 | ${wave}relationship_dv==7) & ${wave}asex==1) bysort ${wave}hidp ${wave}pno: egen long ${wave}fnspid=min(${wave}fnspid_) replace ${wave}fnspid=-8 if ${wave}fnspid==. lab var ${wave}fnspid "Nat/step/adopt father: PIDP" lab def ${wave}fnspid -8"inapplicable", replace lab val ${wave}fnspid ${wave}fnspid clonevar ${wave}fnspno_=${wave}apno if ((${wave}relationship_dv==4 | ${wave}relationship_dv==5 | ${wave}relationship_dv==7) & ${wave}asex==1) bysort ${wave}hidp ${wave}pno: egen long ${wave}fnspno=min(${wave}fnspno_) replace ${wave}fnspno=0 if ${wave}fnspno==. lab def ${wave}fnspno 0 "not in hh" -9 "Missing", replace lab val ${wave}fnspno ${wave}fnspno lab var ${wave}fnspno "Nat/step/adopt father: PNO" // MOTHER clonevar ${wave}mnspid_=apidp if ((${wave}relationship_dv==4 | ${wave}relationship_dv==5 | ${wave}relationship_dv==7) & ${wave}asex==2) bysort ${wave}hidp ${wave}pno: egen long ${wave}mnspid=min(${wave}mnspid_) replace ${wave}mnspid=-8 if ${wave}mnspid==. lab var ${wave}mnspid "Nat/step/adopt mother: PIDP" lab def ${wave}mnspid -8"inapplicable", replace lab val ${wave}mnspid ${wave}mnspid clonevar ${wave}mnspno_=${wave}apno if ((${wave}relationship_dv==4 | ${wave}relationship_dv==5 | ${wave}relationship_dv==7) & ${wave}asex==2) bysort ${wave}hidp ${wave}pno: egen long ${wave}mnspno=min(${wave}mnspno_) replace ${wave}mnspno=0 if ${wave}mnspno==. lab def ${wave}mnspno 0 "not in hh" -9 "Missing", replace lab val ${wave}mnspno ${wave}mnspno lab var ${wave}mnspno "Nat/step/adopt mother: PNO" // GENDER NEUTRAL PARENT (UP TO 2 ) sort ${wave}hidp ${wave}pno gen long ${wave}pnspid_=apidp if (${wave}relationship_dv==4 | ${wave}relationship_dv==5 | ${wave}relationship_dv==7) gen pnstag=(${wave}pnspid_!=.) keep if pnstag==1 // sorting grandparents to the top to create index number sort ${wave}hidp ${wave}pno ${wave}apno bys ${wave}hidp ${wave}pno pnstag: gen pnsindex=_n if pnstag==1 // generate grandparent count bysort ${wave}hidp ${wave}pno: egen ${wave}npns_dv=max(pnsindex) recode ${wave}npns_dv (.=0) lab def ${wave}npns_dv 0"none", replace lab val ${wave}npns_dv ${wave}npns_dv lab var ${wave}npns_dv "Number of R's nat/step/adopt parents in hh" forvalues c=1(1)2 { bysort ${wave}hidp ${wave}pno (${wave}apno): gen pns`c'pno_=${wave}apno if pnsindex==`c' recode pns`c'pno_ (.=0) bysort ${wave}hidp ${wave}pno: egen ${wave}pns`c'pno=max(pns`c'pno_) lab def ${wave}pns`c'pno 0 "not in hh", replace lab val ${wave}pns`c'pno ${wave}pns`c'pno lab var ${wave}pns`c'pno "Nat/step/adopt parent `c': PNO" bysort ${wave}hidp ${wave}pno: gen long pns`c'pid_=apidp if pnsindex==`c' recode pns`c'pid_ (.=-8) bysort ${wave}hidp ${wave}pno: egen long ${wave}pns`c'pid=max(pns`c'pid_) lab var ${wave}pns`c'pid "Nat/step/adopt parent `c': PIDP" lab def ${wave}pns`c'pid -8"inapplicable", replace lab val ${wave}pns`c'pid ${wave}pns`c'pid fre ${wave}pns`c'pno gen pns`c'sex_=${wave}asex if ${wave}apno==${wave}pns`c'pno recode pns`c'sex_ (.=-8) bysort ${wave}hidp ${wave}pno: egen long ${wave}pns`c'sex=max(pns`c'sex_) lab def ${wave}pns`c'sex 1"male" 2"female" -9"missing" -8"inapplicable", replace lab val ${wave}pns`c'sex ${wave}pns`c'sex lab var ${wave}pns`c'sex "Nat/step/adopt parent `c': Sex" } // KEEP ONLY ONE OBSERVATION PER PERSON bysort ${wave}hidp ${wave}pno: gen oneperperson=_n keep if oneperperson==1 keep ${wave}hidp ${wave}pno ${wave}*pid ${wave}*pno ${wave}pns*sex ${wave}npns_dv cap drop ${wave}apno sort ${wave}hidp ${wave}pno save "${outpath}/${wave}pnspointer_.dta", replace //MERGE TO INDALL TO CORRECT POINTERS FOR 1-PERSON HOUSEHOLDS use ${wave}hidp ${wave}pno using "${inpath}/${wave}indall${dta}", clear sort ${wave}hidp ${wave}pno merge ${wave}hidp ${wave}pno using "${outpath}/${wave}pnspointer_.dta" tab _merge isvar ${wave}mnspno ${wave}fnspno ${wave}pns*pno ${wave}npns_dv for var `r(varlist)': replace X=0 if _merge==1 isvar ${wave}*pid ${wave}pns*sex for var `r(varlist)': replace X=-8 if _merge==1 drop _merge sort ${wave}hidp ${wave}pno lab dat "Pointers to the nat/step/adopt parent(s)" save "${outpath}/${wave}pnspno.dta", replace restore * Housekeeping erase "${outpath}/${wave}pnspointer_.dta" }