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
}