Nothing
## ----zlog---------------------------------------------------------------------
library("zlog")
albumin <- c(42, 34, 38, 43, 50, 42, 27, 31, 24)
z(albumin, limits = c(35, 52))
zlog(albumin, limits = c(35, 52))
## ----izlog--------------------------------------------------------------------
izlog(zlog(albumin, limits = c(35, 52)), limits = c(35, 52))
## ----zcol, echo = FALSE, out.width = "95%", fig.width = 10, fig.height = 1, fig.align = "center"----
z <- -10:10
oldpar <- par(mar = c(0, 0, 0, 0), oma = c(0, 0, 0, 0))
image(matrix(z, ncol = 1), col = zcol(z), axes = FALSE)
text(seq(0, 1, length.out=length(z)), 0, label = z)
par(oldpar)
## ----zcoltable, echo = FALSE, result = "asis"---------------------------------
bilirubin <- c(11, 9, 2, 5, 22, 42, 37, 200, 20)
zloga <- zlog(albumin, limits = c(35, 52))
zlogb <- zlog(bilirubin, limits = c(2, 21))
d <- data.frame(
Category = c(
rep(c(
"blood donor",
"hepatitis without cirrhosis",
"hepatitis with cirrhosis"
),
each = 3
)
),
albumin = albumin,
zloga = zloga,
bilirubin = bilirubin,
zlogb = zlogb
)
d$albumin <- kableExtra::cell_spec(
d$albumin, background = zcol(zloga), align = "right"
)
d$bilirubin <- kableExtra::cell_spec(
d$bilirubin, background = zcol(zlogb), align = "right"
)
kableExtra::kable_classic(
kableExtra::kbl(
d,
col.names = c(
"Category",
"albumin", "zlog(albumin)", "bilirubin", "zlog(bilirubin)"
),
digits = 2,
escape = FALSE,
caption = paste0(
"Table reproduced from @hoffmann2017, Table 2, limits used: ",
"albumin 35-52 g/l, bilirubin 2-21 µmol/l."
)
),
"basic"
)
## ----reference_limits---------------------------------------------------------
reference_limits(albumin)
reference_limits(albumin, probs = c(0.05, 0.95))
exp(reference_limits(log(albumin)))
## ----reference_table----------------------------------------------------------
# toy example
reference <- data.frame(
param = c("albumin", rep("bilirubin", 4)),
age = c(0, 1, 2, 3, 7), # days
sex = "both",
units = c("g/l", rep("µmol/l", 4)), # ignored
lower = c(35, rep(NA, 4)), # no real reference values
upper = c(52, 5, 8, 13, 18) # no real reference values
)
knitr::kable(reference)
# lookup albumin reference values for 18 year old woman
lookup_limits(
age = 18 * 365.25,
sex = "female",
table = reference[reference$param == "albumin",]
)
# lookup albumin and bilirubin values for 18 year old woman
lookup_limits(
age = 18 * 365.25,
sex = "female",
table = reference
)
# lookup bilirubin reference values for infants
lookup_limits(
age = 0:8,
sex = rep(c("female", "male"), 5:4),
table = reference[reference$param == "bilirubin",]
)
## ----missing_reference--------------------------------------------------------
# use default fractions
set_missing_limits(reference)
# set fractions manually
set_missing_limits(reference, fraction = c(0.2, 5))
## ----impute_missing_values----------------------------------------------------
x <- data.frame(
age = c(40, 50),
sex = c("female", "male"),
albumin = c(42, NA)
)
x
z_df(impute_df(x, reference, method = "mean"), reference)
zlog_df(impute_df(x, reference), reference)
## ----pbc_load-----------------------------------------------------------------
library("survival")
data("pbc")
labs <- c(
"bili", "chol", "albumin", "copper", "alk.phos", "ast", "trig",
"platelet", "protime"
)
pbc <- pbc[, c("age", "sex", labs)]
knitr::kable(head(pbc), digits = 1)
## ----pbc_reference_limits-----------------------------------------------------
## replicate copper and ast 2 times, use the others just once
param <- rep(labs, ifelse(labs %in% c("copper", "ast"), 2, 1))
sex <- rep_len("both", length(param))
## replace sex == both with female and male for copper and ast
sex[param %in% c("copper", "ast")] <- c("f", "m")
## create data.frame, we ignore age-specific values for now and set age to zero
## (means applicable for all ages)
reference <- data.frame(
param = param, age = 0, sex = sex, lower = NA, upper = NA
)
## estimate reference limits from sample data
for (i in seq_len(nrow(reference))) {
reference[i, c("lower", "upper")] <-
if (reference$sex[i] == "both")
reference_limits(pbc[reference$param[i]])
else
reference_limits(pbc[pbc$sex == reference$sex[i], reference$param[i]])
}
knitr::kable(reference)
## ----pbc_impute---------------------------------------------------------------
pbc[c(6, 14),]
pbc <- impute_df(pbc, reference)
pbc[c(6, 14),]
## ----pbc_zlog-----------------------------------------------------------------
pbc <- zlog_df(pbc, reference)
## ----pbc_table, echo = FALSE--------------------------------------------------
pbctbl <- head(pbc, n = 25)
pbctbl[labs] <- lapply(labs, function(l) {
kableExtra::cell_spec(
sprintf("%.1f", unlist(pbctbl[l])),
background = zcol(unlist(pbctbl[l])),
align = "right"
)
})
kableExtra::kable_classic(
kableExtra::kbl(pbctbl, digits = 1, escape = FALSE),
"basic"
)
## ----si-----------------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.