
Compute carbon monoxide diffusion capacity or transfer factor reference values for given demographics
Source:R/diffusion_capacity.R
pft_diffusion.Rdpft_diffusion() computes ATS-compliant upper and lower normal limits
for carbon monoxide measured diffusion capacity and European equivalents
including DLCO (or TLCO), KCO, and VA.
Arguments
- data
A data frame containing columns for sex ("M","F"), age (in years, in the range 5-90 per the GLI 2017 spline tables) and height (in centimeters). If
dataalso contains a<measure>_measuredcolumn for any of the active measures (tlco,kco_si,vaunder SI units;dlco,kco_tr,vaunder traditional), the measured value is used to compute z-score and percent-predicted (see Value).- SI.units
A boolean. Returns the reference values in SI units if TRUE . and Traditional units if FALSE.
- sex, age, height
Column references. By default
pft_diffusion()reads fromsex,age, andheight. Override via a bare name (sex = Sex), a string (sex = "Sex"), or an rlang injection (sex = !!my_var). The user's original column names are preserved in the output.
Value
The original data frame with extra columns appended for each measure:
<measure>_pred: predicted (median) value.<measure>_lln: lower limit of normal (5th percentile).<measure>_uln: upper limit of normal (95th percentile). If a<measure>_measuredcolumn was supplied indata, two additional columns are emitted:<measure>_zscore: LMS z-score((measured/M)^L - 1) / (L*S).<measure>_pctpred: percent predicted(measured / pred) * 100.
References
Stanojevic S, Graham BL, Cooper BG, et al. Official ERS technical standards: Global Lung Function Initiative reference values for the carbon monoxide transfer factor for Caucasians. Eur Respir J. 2017;50(3):1700010. doi:10.1183/13993003.00010-2017 . (Author correction: doi:10.1183/13993003.50010-2017 , applied here.)
See also
pft_spirometry() and pft_volumes() for the analogous
reference-value functions. pft_severity() grades DLCO impairment
severity from the z-score column produced here. pft_interpret()
composes all three reference functions in one call.
Examples
data <- data.frame(sex=c("M","F"),
age=c(30,5.1),
height=c(178,50))
pft_diffusion(data)
#> # A tibble: 2 × 12
#> sex age height dlco_pred dlco_lln dlco_uln kco_tr_pred kco_tr_lln
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 M 30 178 33.0 26.1 41.0 4.99 3.99
#> 2 F 5.1 50 2.64 1.83 3.69 11.0 7.45
#> # ℹ 4 more variables: kco_tr_uln <dbl>, va_pred <dbl>, va_lln <dbl>,
#> # va_uln <dbl>