derive_extreme_records {admiral} | R Documentation |
Add the first or last observation for each by group as new observations. The
new observations can be selected from the input dataset or an additional
dataset. This function can be used for adding the maximum or minimum value
as a separate visit. All variables of the selected observation are kept. This
distinguishes derive_extreme_records()
from derive_summary_records()
,
where only the by variables are populated for the new records.
derive_extreme_records(
dataset = NULL,
dataset_add = NULL,
dataset_ref = NULL,
by_vars = NULL,
order = NULL,
mode = NULL,
filter_add = NULL,
check_type = "warning",
exist_flag = NULL,
true_value = "Y",
false_value = "N",
keep_source_vars = exprs(everything()),
set_values_to,
filter
)
dataset |
Input dataset If |
dataset_add |
Additional dataset Observations from the specified dataset are added as new records to the
input dataset ( All observations in the specified dataset fulfilling the condition
specified by If the argument is not specified, the input dataset ( The variables specified by the |
dataset_ref |
Reference dataset The variables specified for |
by_vars |
Grouping variables If Permitted Values: list of variables created by |
order |
Sort order Within each by group the observations are ordered by the specified order. Permitted Values: list of expressions created by |
mode |
Selection mode (first or last) If Permitted Values: |
filter_add |
Filter for additional dataset ( Only observations in |
check_type |
Check uniqueness? If Permitted Values: |
exist_flag |
Existence flag The specified variable is added to the output dataset. For by groups with at least one observation in the additional dataset
( For all other by groups Permitted Values: Variable name |
true_value |
True value For new observations selected from the additional dataset ( |
false_value |
False value For new observations not selected from the additional dataset
( |
keep_source_vars |
Variables to be kept in the new records A named list or tidyselect expressions created by |
set_values_to |
Variables to be set The specified variables are set to the specified values for the new observations. A list of variable name-value pairs is expected.
|
filter |
Filter for observations to consider Deprecated, please use the above Only observations fulfilling the specified condition are taken into account for selecting the first or last observation. If the argument is not specified, all observations are considered. Permitted Values: a condition |
The additional dataset (dataset_add
) is restricted as specified by the
filter_add
argument.
For each group (with respect to the variables specified for the
by_vars
argument) the first or last observation (with respect to the
order specified for the order
argument and the mode specified for the
mode
argument) is selected.
If dataset_ref
is specified, observations which are in dataset_ref
but not in the selected records are added.
The variables specified by the set_values_to
argument are added to
the selected observations.
The variables specified by the keep_source_vars
argument are selected
along with the variables specified in by_vars
and set_values_to
arguments.
The observations are added to input dataset.
The input dataset with the first or last observation of each by group added as new observations.
BDS-Findings Functions for adding Parameters/Records:
default_qtc_paramcd()
,
derive_expected_records()
,
derive_extreme_event()
,
derive_locf_records()
,
derive_param_bmi()
,
derive_param_bsa()
,
derive_param_computed()
,
derive_param_doseint()
,
derive_param_exist_flag()
,
derive_param_exposure()
,
derive_param_extreme_record()
,
derive_param_framingham()
,
derive_param_map()
,
derive_param_qtc()
,
derive_param_rr()
,
derive_param_wbc_abs()
,
derive_summary_records()
library(tibble)
library(dplyr, warn.conflicts = FALSE)
library(lubridate)
adlb <- tribble(
~USUBJID, ~AVISITN, ~AVAL, ~LBSEQ,
"1", 1, 113, 1,
"1", 2, 113, 2,
"1", 3, 117, 3,
"2", 1, 101, 1,
"2", 2, 101, 2,
"2", 3, 95, 3
)
# Add a new record for each USUBJID storing the minimum value (first AVAL).
# If multiple records meet the minimum criterion, take the first value by
# AVISITN. Set AVISITN = 97 and DTYPE = MINIMUM for these new records.
# Specify the variables that need to be kept in the new records.
derive_extreme_records(
adlb,
by_vars = exprs(USUBJID),
order = exprs(AVAL, AVISITN),
mode = "first",
filter_add = !is.na(AVAL),
keep_source_vars = exprs(AVAL),
set_values_to = exprs(
AVISITN = 97,
DTYPE = "MINIMUM"
)
)
# Add a new record for each USUBJID storing the maximum value (last AVAL).
# If multiple records meet the maximum criterion, take the first value by
# AVISITN. Set AVISITN = 98 and DTYPE = MAXIMUM for these new records.
derive_extreme_records(
adlb,
by_vars = exprs(USUBJID),
order = exprs(desc(AVAL), AVISITN),
mode = "first",
filter_add = !is.na(AVAL),
set_values_to = exprs(
AVISITN = 98,
DTYPE = "MAXIMUM"
)
)
# Add a new record for each USUBJID storing for the last value.
# Set AVISITN = 99 and DTYPE = LOV for these new records.
derive_extreme_records(
adlb,
by_vars = exprs(USUBJID),
order = exprs(AVISITN),
mode = "last",
set_values_to = exprs(
AVISITN = 99,
DTYPE = "LOV"
)
)
# Derive a new parameter for the first disease progression (PD)
adsl <- tribble(
~USUBJID, ~DTHDT,
"1", ymd("2022-05-13"),
"2", ymd(""),
"3", ymd("")
) %>%
mutate(STUDYID = "XX1234")
adrs <- tribble(
~USUBJID, ~ADTC, ~AVALC,
"1", "2020-01-02", "PR",
"1", "2020-02-01", "CR",
"1", "2020-03-01", "CR",
"1", "2020-04-01", "SD",
"2", "2021-06-15", "SD",
"2", "2021-07-16", "PD",
"2", "2021-09-14", "PD"
) %>%
mutate(
STUDYID = "XX1234",
ADT = ymd(ADTC),
PARAMCD = "OVR",
PARAM = "Overall Response",
ANL01FL = "Y"
) %>%
select(-ADTC)
derive_extreme_records(
adrs,
dataset_ref = adsl,
dataset_add = adrs,
by_vars = exprs(STUDYID, USUBJID),
filter_add = PARAMCD == "OVR" & AVALC == "PD",
order = exprs(ADT),
exist_flag = AVALC,
true_value = "Y",
false_value = "N",
mode = "first",
set_values_to = exprs(
PARAMCD = "PD",
PARAM = "Disease Progression",
AVAL = yn_to_numeric(AVALC),
ANL01FL = "Y",
ADT = ADT
)
)
# derive parameter indicating death
derive_extreme_records(
dataset_ref = adsl,
dataset_add = adsl,
by_vars = exprs(STUDYID, USUBJID),
filter_add = !is.na(DTHDT),
exist_flag = AVALC,
true_value = "Y",
false_value = "N",
mode = "first",
set_values_to = exprs(
PARAMCD = "DEATH",
PARAM = "Death",
ANL01FL = "Y",
ADT = DTHDT
)
)