We load the packages we will use:
We create database:
# Creation of dataset
set.seed(1234)
n_AE <- 300
n_pat <- 100
df <- data.frame(OBS = sample(1:n_pat, n_AE, replace=T),
cat_tox = sample(paste("cat", 1:3), n_AE, replace=T),
tox = sample(paste("tox", 1:2), n_AE, replace=T),
tox_bis = sample(paste("tox", 1:20), n_AE, replace=T),
grade = sample(c(1, 2, 3, 4, 5, NA), n_AE, prob=c(0.3, 0.3, 0.2, 0.1, 0.05, 0.05), replace=T)) %>% arrange(OBS)
df$ARM <- ifelse(df$OBS%in%1:50, 'A', 'B')
OBS | cat_tox | tox | tox_bis | grade | ARM |
---|---|---|---|---|---|
2 | cat 2 | tox 1 | tox 7 | 1 | A |
2 | cat 2 | tox 1 | tox 7 | 2 | A |
2 | cat 2 | tox 2 | tox 10 | 1 | A |
3 | cat 2 | tox 2 | tox 13 | 2 | A |
3 | cat 3 | tox 2 | tox 11 | 1 | A |
3 | cat 3 | tox 1 | tox 14 | 2 | A |
3 | cat 2 | tox 1 | tox 5 | 5 | A |
4 | cat 1 | tox 1 | tox 18 | 3 | A |
df_bis <- data.frame(NAME = rep(paste("tox", 1:8), each=2),
N = sample(0:(n_pat/2), 16, replace=T),
ARM = rep(c('A', 'B'), 8))
NAME | N | ARM |
---|---|---|
tox 1 | 49 | A |
tox 1 | 38 | B |
tox 2 | 30 | A |
tox 2 | 21 | B |
tox 3 | 9 | A |
tox 3 | 8 | B |
tox 4 | 15 | A |
tox 4 | 7 | B |
tabTOX
functionThis function is used to create a table from a database with adverse events (multiple lines per patient) to represent number of patients affected by toxicity.
Arguments
tabTOX(
baz,
database of toxicity (one
line per toxicity).
id,
patient identifier variable.
var,
variable toxicity/treatment/….
var_cat,
variable toxicity/treatment category/… (optional).
var_grade,
variable with toxicity grade (optional).
grade_max = TRUE,
only the maximal grade per
toxicity/toxicity category is taken into account if TRUE
,
all grades of the same toxicity are counted if FALSE
.
var_name,
name of the column to be displayed in the table,
by default var
variable name (optional).
all = TRUE,
to display the number of toxicity in all
grades.
addNA = TRUE,
to display toxicity with missing
grade, if FALSE
missing grades are taken into account in
the Total column.
decreasing = TRUE,
to sort by most
represented toxicities/treatments.
n,
number total of
patients to calculate percentages (optional).
percent = "$\\%$",
how to display percent.
langue = "fr",
language (fr
or
en
).
latex = TRUE,
latex table option,
bold lines and indentations.
total = "Total",
to add
an extra line at the top of the table, all toxicities combined.
)
tabTOX_arm
functionThis function is used to create a table from a database with adverse events (multiple lines per patient) to represent number of patients affected by toxicity according to randomization arm.
Arguments
tabTOX_arm(
baz,
database of toxicity
(one line per toxicity).
id,
patient identifier
variable.
var,
variable toxicity/treatment/….
var_cat,
variable toxicity/treatment category/… (optional).
var_grade,
variable with toxicity grade (optional).
grade_filter = 3,
displays in the 2nd column only
grades higher than the number indicated (optional).
var_name,
name of the column to be displayed in the table,
by default var
variable name (optional).
n,
number total of patients to calculate percentages
(optional).
percent = "$\\%$",
how to display percent.
langue = "fr",
language (fr
or
en
).
latex = TRUE,
latex table option,
bold lines and indentations.
total = "Total",
to add
an extra line at the top of the table, all toxicities combined.
arm,
variable for randomization arm.
arm_levels,
levels for arm (optional).
)
plotTOX
functionThis function allows to draw a representation of adverse events for
two groups comparison. A database with adverse events (multiple lines
per patient) can be given (use of tabTOX()
in the
function), or directly a dataframe with three variables
(NAME
indicates the type of toxicity, N
the
number of patients affected by the toxicity and the last one the group
for which the name can be given in the argument arm
of the
function).
The function returns two objects data
and
plot
which contain respectively a table with the number of
patients concerned by toxicity per arm (with the RR and its 95%CI) and
an associated graph.
Arguments
plotTOX(
baz,
database of toxicity (one
line per toxicity) or dataframe with three variables giving directly the
number of toxicities per patient and per arm.
id,
patient identifier variable (necessary only if all database of adverse
events is given).
var,
variable toxicity/treatment/…
(necessary only if all database of adverse events is given).
n,
vector giving the number of patients in each arm (vector
of size 2 with same order of arm
levels).
arm,
variable indicating arm.
arm_levels,
arm labels (optional, vector of size 2 with same order of
arm
levels).
percent_supp = 0,
percentage
below which the toxicity is not displayed.
favors,
vector with the names to display below axis for directional difference
(optional).
favors_fontsize = 3,
fontsize for the text
display below axis for directional difference (optional).
y_favors_arrow = 0.2,
coordinate for favors arrows.
y_favors_text = -0.1,
coordinate for favors labels.
langue = "fr",
language (fr
or
en
).
name_file,
path and name of the file
(pdf, png or tiff) in which we want to save the forest plot (optional).
dim_file,
size 2 vector to specify the width and
height of the graphic when we want to save it (optional).
)
This document is a work of the statistics team in the Biostatistics and Medical Information Department at Saint-Louis Hospital in Paris (SBIM).
Developed and updated by Noémie Bigot and Anouk Walter-Petrich
noemie.bigot@aphp.fr; anouk.walter-petrich@u-paris.fr
Based on The R Graph Gallery by Yan Holtz.