
Select the First or Last Date from Several Sources
Source:R/derive_param_tte.R
filter_date_sources.RdSelect for each subject the first or last observation with respect to a date from a list of sources.
Usage
filter_date_sources(
sources,
source_datasets,
by_vars,
create_datetime = FALSE,
subject_keys,
mode
)Arguments
- sources
Sources
A list of
tte_source()objects is expected.- source_datasets
Source datasets
A named list of datasets is expected. The
dataset_namefield oftte_source()refers to the dataset provided in the list.- by_vars
By variables
If the parameter is specified, for each by group the observations are selected separately.
- create_datetime
Create datetime variable?
If set to
TRUE, variablesADTMis created. Otherwise, variablesADTis created.- subject_keys
Variables to uniquely identify a subject
A list of symbols created using
exprs()is expected.- mode
Selection mode (first or last)
If
"first"is specified, for each subject the first observation with respect to the date is included in the output dataset. If"last"is specified, the last observation is included in the output dataset.Permitted Values:
"first","last"
Details
The following steps are performed to create the output dataset:
For each source dataset the observations as specified by the
filterelement are selected. Then for each patient the first or last observation (with respect todate) is selected.The
ADTvariable is set to the variable specified by thedateelement. If the date variable is a datetime variable, only the datepart is copied. If the source variable is a character variable, it is converted to a date. If the date is incomplete, it is imputed as the first possible date.The
CNSRis added and set to the value of thecensorelement.The selected observations of all source datasets are combined into a single dataset.
For each patient the first or last observation (with respect to the
ADTvariable) from the single dataset is selected.
See also
Other Advanced Functions:
assert_db_requirements(),
assert_terms(),
assert_valid_queries(),
extend_source_datasets(),
format.basket_select(),
list_tte_source_objects(),
params(),
validate_basket_select(),
validate_query()
Examples
library(tibble)
library(dplyr, warn.conflicts = FALSE)
library(lubridate)
adsl <- tribble(
~USUBJID, ~TRTSDT, ~EOSDT,
"01", ymd("2020-12-06"), ymd("2021-03-06"),
"02", ymd("2021-01-16"), ymd("2021-02-03")
) %>%
mutate(STUDYID = "AB42")
ae <- tribble(
~USUBJID, ~AESTDTC, ~AESEQ, ~AEDECOD,
"01", "2021-01-03", 1, "Flu",
"01", "2021-03-04", 2, "Cough",
"01", "2021-01-01", 3, "Flu"
) %>%
mutate(
STUDYID = "AB42",
AESTDT = ymd(AESTDTC)
)
ttae <- event_source(
dataset_name = "ae",
date = AESTDT,
set_values_to = exprs(
EVNTDESC = "AE",
SRCDOM = "AE",
SRCVAR = "AESTDTC",
SRCSEQ = AESEQ
)
)
filter_date_sources(
sources = list(ttae),
source_datasets = list(adsl = adsl, ae = ae),
by_vars = exprs(AEDECOD),
create_datetime = FALSE,
subject_keys = get_admiral_option("subject_keys"),
mode = "first"
)
#> # A tibble: 2 x 9
#> AEDECOD STUDYID USUBJID EVNTDESC SRCDOM SRCVAR SRCSEQ CNSR ADT
#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <int> <date>
#> 1 Cough AB42 01 AE AE AESTDTC 2 0 2021-03-04
#> 2 Flu AB42 01 AE AE AESTDTC 3 0 2021-01-01