Anda di halaman 1dari 5

// pad neutrophil/lymphocyte ratio analysis

// merge data
// 23 jul 2014
clear all
set mem 10g
cd "/Users/steve/Desktop/pad/raw_data"
// ----------------------------------------------------------------- cbc data
use cbc_a
count
append using cbc_b
count
append using cbc_c
count
rename lbxwbcsi wbc
rename lbdlymno lymphno
rename lbdneno neutno
rename lbxrdw rdw
rename lbxmpsi mpv
rename lbxpltsi plt
keep seqn wbc lymphno neutno rdw mpv plt
gen nlr = neutno/lymphno
// ----------------------------------------------------------------- abi data
merge 1:1 seqn using abi_a, update gen(merge_abia)
merge 1:1 seqn using abi_b, update gen(merge_abib)
merge 1:1 seqn using abi_c, update gen(merge_abic)
egen minabi = rowmin(lexlabpi lexrabpi)
egen maxabi = rowmax(lexlabpi lexrabpi)
egen meanabi = rowmean(lexlabpi lexrabpi)
gen pad = minabi < 0.9 & !mi(minabi)
gen pad_high = maxabi > 1.4 & !mi(maxabi)
drop le*
// ----------------------------------------------------------------- demo data
local demo_vars ///
ridstatr ridexmon riagendr ridageyr ridagemn ridageex ridreth1 dmdeduc2
///
dmdmartl ridexprg wtint2yr wtmec2yr sdmvpsu sdmvstra sddsrvyr
merge 1:1 seqn using demo_a, update gen(merge_demoa) keepusing(`demo_vars')
merge 1:1 seqn using demo_b, update gen(merge_demob) keepusing(`demo_vars')
merge 1:1 seqn using demo_c, update gen(merge_democ) keepusing(`demo_vars')
rename ridageyr age
recode riagendr (1=1) (2=0), gen(male)
// ----------------------------------------------------------------- bmx data
merge 1:1 seqn using bmx_a, update gen(merge_bmxa) keepusing(bmxbmi bmxwaist)
merge 1:1 seqn using bmx_b, update gen(merge_bmxb) keepusing(bmxbmi bmxwaist)
merge 1:1 seqn using bmx_c, update gen(merge_bmxc) keepusing(bmxbmi bmxwaist)
rename bmxbmi bmi
rename bmxwaist wc
// ----------------------------------------------------------------- a1c data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using a1c_`i', update gen(merge_a1c`i')
}
rename lbxgh a1c
// ----------------------------------------------------------------- bpx data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using bpx_`i', update gen(merge_bpx`i') keepusing(bpxsar
bpxdar)
}
rename bpxsar sbp
rename bpxdar dbp
/* FYI , from http://wwwn.cdc.gov/nchs/nhanes/1999-2000/BPX.htm#BPXDI1
The variables BPXSAR and BPXDAR represent blood pressure results that were repor
ted to the examinee. They do not represent traditional averages. These variables
were calculated using the following protocol:
If only one blood pressure reading was obtained, that reading is the average. If
there is more than one blood pressure reading, the first reading is always excl
uded from the average.
If only two blood pressure readings were obtained, the second blood pressure rea
ding is the average.
If all diastolic readings were zero, then the average would be zero.
Exception: If there is one diastolic reading of zero and one (or more) with a nu
mber above zero, the diastolic reading with zero is not used to calculate the di
astolic average.
If two out of three diastolic readings are zero, the one diastolic reading that
is not zero is used to calculate the diastolic average.
*/
// ----------------------------------------------------------------- crp data
merge 1:1 seqn using crp_a, update gen(merge_crpa) keepusing(lbxcrp lbxhp1 lbxfb
)
merge 1:1 seqn using crp_b, update gen(merge_crpb) keepusing(lbxcrp lbxfb)
merge 1:1 seqn using crp_c, update gen(merge_crpc) keepusing(lbxcrp)
rename lbxcrp crp
rename lbxhp1 hp
rename lbxfb fb
recode hp (0/0.90 = 0) (0.91/1.09 = 1) (nonm = 2) (mis = .), gen(hpcat)
label def hpcat 0 "-ve" 1 "Equivocal" 2 "+ve"
label val hpcat hpcat
** n.b., HP only in 99-00; fibrinogen only in 99-00, 01-02; CRP in all 3 waves *
*
// ----------------------------------------------------------------- hdl data
merge 1:1 seqn using hdl_a, update gen(merge_hdla) keepusing(lbxtc lbdhdl)
merge 1:1 seqn using hdl_b, update gen(merge_hdlb) keepusing(lbxtc lbdhdl)
merge 1:1 seqn using hdl_c, update gen(merge_hdlc) keepusing(lbxtc lbxhdd)
replace lbdhdl=lbxhdd if mi(lbdhdl) & !mi(lbxhdd)
drop lbxhdd
rename lbdhdl hdl
rename lbxtc tc
// ----------------------------------------------------------------- ldl data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using ldl_`i', update gen(merge_ldl`i') keepusing(lbxtr l
bdldl)
}
rename lbxtr tg
rename lbdldl ldl
// ----------------------------------------------------------------- rx data
merge 1:1 seqn using rxq_rx9904.dta, update gen(merge_rxq)
// ----------------------------------------------------------------- smoking dat
a
local yr a b c
foreach i of local yr {
merge 1:1 seqn using smq_`i', update gen(merge_smq`i') keepusing(smq020
smq040)
}
rename smq020 smkev
rename smq040 smkcurrent
**smqmec has not been used**
// ----------------------------------------------------------------- alcohol use
data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using alq_`i', update gen(merge_alq`i') keepusing(alq120q
alq120u alq130)
}
recode alq130 (1 = 1) (2=2) (3/50 = 3) (99 = .) (mis = .), gen(avgetoh)
label def avgetoh 1 "<= 1 drink/d" 2 "2 drink/d" 3 "3+ drink/d"
label val avgetoh avgetoh
drop alq*
// ----------------------------------------------------------------- bp Qs data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using bpq_`i', update gen(merge_bpq`i') ///
keepusing(bpq020 bpq040a bpq080 bpq090d
)
}
rename bpq020 htnmd
rename bpq040a htnrx
rename bpq080 hldmd
rename bpq090d hldrx
// ----------------------------------------------------------------- dm Qs data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using diq_`i', update gen(merge_diq`i') ///
keepusing(diq010 diq050 diq070)
}
rename diq010 dmmd
rename diq050 dminsulin
rename diq070 dmpills
// ----------------------------------------------------------------- medical con
ditions Qs data
local yr a b c
foreach i of local yr {
merge 1:1 seqn using mcq_`i', update gen(merge_mcq`i') ///
keepusing(mcq160c mcq160d mcq160e mcq16
0g )
}
* n.b., mcq100 mcq110 are high bp in 1999-2000
// ----------------------------------------------------------------- mortality d
ata
merge 1:1 seqn using nhanes99_04mort, update gen(merge_mort)
do mort_clean0.do
// ----------------------------------------------------------------- cleaning
drop merge*
// ----------------------------------------------------------------- analysis
svyset sdmvpsu [pw=wtmec2yr], strata(sdmvstra)
drop if mi(minabi)
tab pad /* Of 7,571, 657 have PAD*/
svy: tab pad /*PAD % 5.7 */
recode minabi (0/0.89 = 0) (0.90/1.09 = 1) (1.10/1.39 = 2) (nonm = 3), gen(abica
t)
lab def abicat 0 "ABI < 0.9" 1 "ABI 0.9-1.09" 2 "ABI 1.1-1.39" 3 "ABI > 1.4"
lab val abicat abicat
recode minabi (0/0.59 = 0) (0.60/0.89 = 1) (0.90/1.09 = 2) (1.10/1.39 = 4) (nonm
= 4), gen(abicat2)
xtile nlr4 [pw=wtmec2yr]= nlr, n(4)
xtile crp4 [pw=wtmec2yr] = crp, n(4)
* reynolds
logistic death_cvd male a1c cursmkr logsbp loghdl logtcp logcrp famhx
logit death_cvd male a1c cursmkr logsbp loghdl logtcp logcrp famhx
lroc, nograph
predict reynolds_xb, xb
predict reynolds_pr, pr
xtile reynolds10 = reynolds_pr, n(10)
table reynolds10, c(mean reynolds_pr)
graph bar (mean) reynolds_pr, over(reynolds10)
tab pad nlr4 , row col
tab dead if !mi(pad)
tab dead pad , row col
logistic death_cvd i.pad nlr
logistic death_cvd i.pad nlr4
lroc, nograph
logistic death_cvd i.pad crp4
lroc, nograph
stset time, fail(death_cvd)
sts graph , by(pad)
sts graph , by(nlr4)
sts graph if pad==1, by(nlr4)
/* // extra code to bring convert .xpt to .dta
local data alq bpq cdq diq mcq paq rxq_rx smq smqmec
local yr a b c
foreach x of local data {
foreach y of local yr {
fdause `x'_`y' , clear
compress
save `x'_`y'
}
}
// ----------------------------------------------------------------- NOT DONE
** local data
** alq (EtOH): keepusing(alq120q alq120u alq130)
** bpq (HTN/lipid Qs): keepusing(bpq020 bpq030 bpq040a bpq080 bpq090d)
** ----> would be interesting to use these Qs for a study.. what's been done?
** cdq (SOB/CHF Qs): defer for now
** diq (diabetes Qs): keepusing(diq010 diq050 diq070)
** mcq (medical conditions): keepusing(mcq160c mcq160d mcq160e mcq160g mcq110 mc
q100)
** paq (physical acitivy): avoid for now
** cot_c (cotinine)
** vitd_b, vitd_c (vit D)

Anda mungkin juga menyukai