Skip to content

Syntax

Age groups

Creates agegr5_dv, agegr10_dv, agegr13_dv

// Creates w_agegr5_dv, w_agegr10_dv and w_agegr13_dv - Age group categories
// INPUT FILE - w_indall.dta 
// OUTPUT FILE - w_agegr_dv.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" 
// INCLUDE WAVE LETTERS FOR THE WAVES NEEDED
global waves a b c d e f g h i j k l

 
**** Don’t make changes after this point ****
foreach w of global waves {
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}indall${dta}", clear
drop ${wave}agegr*
label drop _all

if ${cohort}== 1 {
	cap gen ${wave}aivfio=.
	cap gen ${wave}ivfio=.	
	}


* Age Groups: 5 year intervals 0-70+
recode ${wave}age_dv (0/4=1)(5/9=2)(10/14=3)(15/19=4)(20/24=5)(25/29=6)(30/34=7)(35/39=8) ///
	(40/44=9)(45/49=10)(50/54=11)(55/59=12)(60/64=13)(65/69=14)(70/120=15) (-9/-1=-9), gen(${wave}agegr5_dv)
label var ${wave}agegr5_dv "Age group (age_dv): 5 year intervals"	
label define ${wave}agegr5_dv ///
	-9 "Missing or wild" ///
	1 "0-4 years old" ///
	2 "5-9 years old" ///
	3 "10-14 years old" ///
	4 "15-19 years old" ///
	5 "20-24 years old" ///
	6 "25-29 years old" ///
	7 "30-34 years old" ///
	8 "35-39 years old" ///
	9 "40-44 years old" ///
	10 "45-49 years old" ///
	11 "50-54 years old" ///
	12 "55-59 years old" ///
	13 "60-64 years old" ///
	14 "65-69 years old" ///
	15 "70 years or older" 
label values ${wave}agegr5_dv ${wave}agegr5_dv
table ${wave}agegr5_dv, c(mean ${wave}age_dv)


* Age Groups: 10 year intervals 0-70+
recode ${wave}age_dv (0/9=1)(10/19=2)(20/29=3)(30/39=4)(40/49=5)(50/59=6)(60/69=7)(70/120=8) (-9/-1=-9), gen(${wave}agegr10_dv) 
replace ${wave}agegr10_dv=1 if (${wave}age_dv<0 & ${wave}ivfio==24) /* children under 10 */
label var ${wave}agegr10_dv "Age group (age_dv): 10 year intervals"	
label define ${wave}agegr10_dv ///
	-9 "Missing or wild" ///
	1 "0-9 years old" ///
	2 "10-19 years old" ///
	3 "20-29 years old" ///
	4 "30-39 years old" ///
	5 "40-49 years old" ///
	6 "50-59 years old" ///
	7 "60-69 years old" ///
	8 "70 years or older" 
label values ${wave}agegr10_dv ${wave}agegr10_dv
table ${wave}agegr10_dv, c(mean ${wave}age_dv)

* Age Groups: 13 categories (LFS)
recode ${wave}age_dv (0/15=1)(16/17=2)(18/19=3)(20/24=4)(25/29=5)(30/34=6)(35/39=7)(40/44=8) ///
	(45/49=9)(50/54=10)(55/59=11)(60/64=12)(65/120=13) (-9/-1=-9), gen(${wave}agegr13_dv) 

replace ${wave}agegr13_dv=1 if ((${wave}age_dv<0 & inlist(${wave}ivfio,21,22,23,24,74))|(${wave}age_dv<0 & (${wave}adresp15_dv>0 & ${wave}adresp15_dv<.)))
label var ${wave}agegr13_dv "Age group (age_dv): 13 categories"	
label define ${wave}agegr13_dv ///
	-9 "Missing or wild" ///
	1 "0-15 years old" ///
	2 "16-17 years old" ///
	3 "18-19 years old" ///
	4 "20-24 years old" ///
	5 "25-29 years old" ///
	6 "30-34 years old" ///
	7 "35-39 years old" ///
	8 "40-44 years old" ///
	9 "45-49 years old" ///
	10 "50-54 years old" ///
	11 "55-59 years old" ///
	12 "60-64 years old" ///
	13 "65 years or older" 
label values ${wave}agegr13_dv ${wave}agegr13_dv 
table ${wave}agegr13_dv, c(mean ${wave}age_dv)	

// Edits based on ivfio for respondents with funny age_dv values
recode ${wave}agegr5_dv (1 2 3=-9) if inlist(${wave}ivfio,1,2,3,7,10,11,15)
recode ${wave}agegr10_dv (1   =-9) if inlist(${wave}ivfio,1,2,3,7,10,11,15)
recode ${wave}agegr10_dv (1   =-9) if inlist(${wave}ivfio,1,2,3,7,10,11,15)
* Target variables
keep ${wave}hidp ${wave}pno ${wave}agegr13_dv ${wave}agegr5_dv ${wave}agegr10_dv
sort ${wave}hidp ${wave}pno
lab dat "Age groups (age_dv), derived"
save "${outpath}/${wave}agegr_dv", replace
}

Email newsletter

Sign up to our newsletter

Enter your email to receive our newsletter updates.