Adds a record for the dose intensity for each by group (e.g., subject and visit) where the source parameters are available.
Note: This is a wrapper function for the more generic derive_param_computed()
.
The analysis value of the new parameter is derived as Total Dose / Planned Dose * 100
derive_param_doseint(
dataset,
by_vars,
set_values_to = exprs(PARAMCD = "TNDOSINT"),
tadm_code = "TNDOSE",
tpadm_code = "TSNDOSE",
zero_doses = "Inf",
filter = NULL
)
Input dataset
The variables specified by the by_vars
argument are expected to be in the dataset.
PARAMCD
, and AVAL
are expected as well.
The variable specified by by_vars
and PARAMCD
must be a unique key of
the input dataset after restricting it by the filter condition (filter
parameter) and to the parameters specified by tadm_code
and padm_code
.
none
Grouping variables
Only variables specified in by_vars
will be populated
in the newly created records.
none
Variables to be set
The specified variables are set to the specified values for the new
observations. For example exprs(PARAMCD = "MAP")
defines the parameter code
for the new parameter.
List of variable-value pairs
exprs(PARAMCD = "MAP")
Total Doses Administered parameter code
The observations where PARAMCD
equals the specified value are considered
as the total dose administered. The AVAL
associated with this PARAMCD
will be the numerator of the dose intensity calculation.
character value
"TNDOSE"
Total Doses Planned parameter code
The observations where PARAMCD
equals the specified value are considered
as the total planned dose. The AVAL
associated with this PARAMCD
will be the denominator of the dose intensity calculation.
character value
"TSNDOSE"
Flag indicating logic for handling 0 planned or
administered doses for a by_vars
group
Inf
, 100
No record is returned if either the planned (tpadm_code
) or administered
(tadm_code
) AVAL
are NA
. No record is returned is a record does not
exist for both tadm_code
and tpadm_code
for the specified by_var
.
If zero_doses
= Inf
:
If the planned dose (tpadm_code
) is 0 and administered dose
(tadm_code
) is 0, NaN
is returned.
If the planned dose (tpadm_code
) is 0 and the administered dose
(tadm_code
) is > 0, Inf
is returned.
If zero_doses
= 100
:
If the planned dose (tpadm_code
) is 0 and administered dose
(tadm_code
) is 0, 0 is returned.
If the planned dose (tpadm_code
) is 0 and the administered dose
(tadm_code
) is > 0, 100 is returned.
"Inf"
Filter condition
The specified condition is applied to the input dataset before deriving the new parameter, i.e., only observations fulfilling the condition are taken into account.
an unquoted condition, e.g., AVISIT == "BASELINE"
NULL
The input dataset with the new parameter rows added. Note, a variable will only
be populated in the new parameter rows if it is specified in by_vars
.
BDS-Findings Functions for adding Parameters/Records:
default_qtc_paramcd()
,
derive_expected_records()
,
derive_extreme_event()
,
derive_extreme_records()
,
derive_locf_records()
,
derive_param_bmi()
,
derive_param_bsa()
,
derive_param_computed()
,
derive_param_exist_flag()
,
derive_param_exposure()
,
derive_param_framingham()
,
derive_param_map()
,
derive_param_qtc()
,
derive_param_rr()
,
derive_param_wbc_abs()
,
derive_summary_records()
library(tibble)
library(lubridate, warn.conflicts = FALSE)
adex <- tribble(
~USUBJID, ~PARAMCD, ~VISIT, ~ANL01FL, ~ASTDT, ~AENDT, ~AVAL,
"P001", "TNDOSE", "V1", "Y", ymd("2020-01-01"), ymd("2020-01-30"), 59,
"P001", "TSNDOSE", "V1", "Y", ymd("2020-01-01"), ymd("2020-02-01"), 96,
"P001", "TNDOSE", "V2", "Y", ymd("2020-02-01"), ymd("2020-03-15"), 88,
"P001", "TSNDOSE", "V2", "Y", ymd("2020-02-05"), ymd("2020-03-01"), 88,
"P002", "TNDOSE", "V1", "Y", ymd("2021-01-01"), ymd("2021-01-30"), 0,
"P002", "TSNDOSE", "V1", "Y", ymd("2021-01-01"), ymd("2021-02-01"), 0,
"P002", "TNDOSE", "V2", "Y", ymd("2021-02-01"), ymd("2021-03-15"), 52,
"P002", "TSNDOSE", "V2", "Y", ymd("2021-02-05"), ymd("2021-03-01"), 0
)
derive_param_doseint(
adex,
by_vars = exprs(USUBJID, VISIT),
set_values_to = exprs(PARAMCD = "TNDOSINT"),
tadm_code = "TNDOSE",
tpadm_code = "TSNDOSE"
)
#> # A tibble: 12 × 7
#> USUBJID PARAMCD VISIT ANL01FL ASTDT AENDT AVAL
#> <chr> <chr> <chr> <chr> <date> <date> <dbl>
#> 1 P001 TNDOSE V1 Y 2020-01-01 2020-01-30 59
#> 2 P001 TSNDOSE V1 Y 2020-01-01 2020-02-01 96
#> 3 P001 TNDOSE V2 Y 2020-02-01 2020-03-15 88
#> 4 P001 TSNDOSE V2 Y 2020-02-05 2020-03-01 88
#> 5 P002 TNDOSE V1 Y 2021-01-01 2021-01-30 0
#> 6 P002 TSNDOSE V1 Y 2021-01-01 2021-02-01 0
#> 7 P002 TNDOSE V2 Y 2021-02-01 2021-03-15 52
#> 8 P002 TSNDOSE V2 Y 2021-02-05 2021-03-01 0
#> 9 P001 TNDOSINT V1 NA NA NA 61.5
#> 10 P001 TNDOSINT V2 NA NA NA 100
#> 11 P002 TNDOSINT V1 NA NA NA NaN
#> 12 P002 TNDOSINT V2 NA NA NA Inf
derive_param_doseint(
adex,
by_vars = exprs(USUBJID, VISIT),
set_values_to = exprs(PARAMCD = "TDOSINT2"),
tadm_code = "TNDOSE",
tpadm_code = "TSNDOSE",
zero_doses = "100"
)
#> # A tibble: 12 × 7
#> USUBJID PARAMCD VISIT ANL01FL ASTDT AENDT AVAL
#> <chr> <chr> <chr> <chr> <date> <date> <dbl>
#> 1 P001 TNDOSE V1 Y 2020-01-01 2020-01-30 59
#> 2 P001 TSNDOSE V1 Y 2020-01-01 2020-02-01 96
#> 3 P001 TNDOSE V2 Y 2020-02-01 2020-03-15 88
#> 4 P001 TSNDOSE V2 Y 2020-02-05 2020-03-01 88
#> 5 P002 TNDOSE V1 Y 2021-01-01 2021-01-30 0
#> 6 P002 TSNDOSE V1 Y 2021-01-01 2021-02-01 0
#> 7 P002 TNDOSE V2 Y 2021-02-01 2021-03-15 52
#> 8 P002 TSNDOSE V2 Y 2021-02-05 2021-03-01 0
#> 9 P001 TDOSINT2 V1 NA NA NA 61.5
#> 10 P001 TDOSINT2 V2 NA NA NA 100
#> 11 P002 TDOSINT2 V1 NA NA NA 0
#> 12 P002 TDOSINT2 V2 NA NA NA 100