Creates bmi_dv
// Creates w_bmi_dv - Body Mass Index
// INPUT FILE - w_indresp.dta
// OUTPUT FILE - w_bmi_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"
foreach w in a { // 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}indresp${dta}", clear
drop *_bmi_dv
/* BMI is defined as body weight in kg divided by the square of the respondent’s
height in metres. Information on height and weight collected in imperial units
is converted to metric units. The BMI can be used to indicate whether an
individual is over or under weight using cut-off points as suggested, e.g.,
by the WHO. We do not provide the categories.
*/
if ${waveno}==24 {
ds *,not(type string)
// recode -11 -10 to -8
foreach v of varlist `r(varlist)' {
recode `v' (. = -9)
recode `v' (-11 -10 = -8)
}
}
if ${cohort}==1 {
cap rename ${wave}hlwtm ${wave}hlwt
}
isvar ${wave}hlhtf ${wave}hlhti ${wave}hlhtc ${wave}hlwt ${wave}hlwts ///
${wave}hlwtp ${wave}hlwtk ${wave}hlht
for var `r(varlist)': replace X=. if X<0
** Height, weight & BMI
generat double ${wave}heightCM=${wave}hlhtc if ${wave}hlhtc<. & ${wave}hlhtc>0
replace ${wave}heightCM=int(((${wave}hlhtf*12)+${wave}hlhti)*2.54) if ${wave}hlhtf!=. & ${wave}hlhti!=.
su ${wave}heightCM if ${wave}hlht==1|${wave}hlht==2
su ${wave}heightCM if ${wave}hlht~=1 & ${wave}hlht~=2
generat double ${wave}weightKG=${wave}hlwtk if ${wave}hlwtk<. & ${wave}hlwtk>0
replace ${wave}weightKG=int(((${wave}hlwts*14)+${wave}hlwtp)*0.45359237) if ${wave}hlwts!=. & ${wave}hlwtp!=.
su ${wave}weightKG if ${wave}hlwt==1|${wave}hlwt==2
su ${wave}weightKG if ${wave}hlwt~=1 & ${wave}hlwt~=2
* markout ${wave}hlhtf ${wave}hlhti ${wave}hlhtc ${wave}hlwt ${wave}hlwts ${wave}hlwtp ${wave}hlwtk ${wave}hlht
gen double ${wave}bmi_dv=${wave}weightKG/((${wave}heightCM/100)^2)
replace ${wave}bmi_dv=round(${wave}bmi_dv,.1)
recode ${wave}bmi_dv (.=-9)
recode ${wave}bmi_dv (-9=-7) if ${wave}ivfio==2
lab def ${wave}bmi_dv -9"missing", replace
lab def ${wave}bmi_dv -7"proxy respondent", add
lab val ${wave}bmi_dv ${wave}bmi_dv
lab var ${wave}bmi_dv "Body Mass Index"
fre ${wave}bmi_dv
drop ${wave}weightKG ${wave}heightCM
keep pidp ${wave}bmi_dv
save "${outpath}/${wave}bmi_dv", replace
}