filter_date_sources {admiral} | R Documentation |
Select the First or Last Date from Several Sources
Description
Select 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,
check_type = "none"
)
Arguments
sources |
Sources A list of
|
source_datasets |
Source datasets A named list of datasets is expected. The
|
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
|
subject_keys |
Variables to uniquely identify a subject A list of symbols created using
|
mode |
Selection mode (first or last) If
|
check_type |
Check uniqueness If
|
Details
The following steps are performed to create the output dataset:
For each source dataset the observations as specified by the
filter
element are selected. Then for each subject the first or last observation (with respect todate
) is selected.The
ADT
variable is set to the variable specified by thedate
element. 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
CNSR
is added and set to the value of thecensor
element.The selected observations of all source datasets are combined into a single dataset.
For each subject the first or last observation (with respect to the
ADT
variable) from the single dataset is selected.
Value
A dataset with one observation per subject as described in the "Details" section.
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
)
)
admiral:::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",
check_type = "none"
)