Derive a date ('--DT') from a date character vector ('--DTC').
The date can be imputed (see date_imputation argument)
and the date imputation flag ('--DTF') can be added.
Usage
derive_vars_dt(
dataset,
new_vars_prefix,
dtc,
highest_imputation = "n",
date_imputation = "first",
flag_imputation = "auto",
min_dates = NULL,
max_dates = NULL,
preserve = FALSE
)Arguments
- dataset
-
Input dataset
The variables specified by the
dtcargument are expected to be in the dataset. - new_vars_prefix
-
Prefix used for the output variable(s).
A character scalar is expected. For the date variable "DT" is appended to the specified prefix and for the date imputation flag "DTF". I.e., for
new_vars_prefix = "AST"the variablesASTDTandASTDTFare created. - dtc
-
The
'--DTC'date to imputeA character date is expected in a format like
yyyy-mm-ddoryyyy-mm-ddThh:mm:ss. Trailing components can be omitted and-is a valid "missing" value for any component. - highest_imputation
-
Highest imputation level
The
highest_imputationargument controls which components of the DTC value are imputed if they are missing. All components up to the specified level are imputed.If a component at a higher level than the highest imputation level is missing,
NA_character_is returned. For example, forhighest_imputation = "D""2020"results inNA_character_because the month is missing.If
"n"is specified no imputation is performed, i.e., if any component is missing,NA_character_is returned.If
"Y"is specified,date_imputationshould be"first"or"last"andmin_datesormax_datesshould be specified respectively. Otherwise,NA_character_is returned if the year component is missing.Permitted Values:
"Y"(year, highest level),"M"(month),"D"(day),"n"(none, lowest level) - date_imputation
-
The value to impute the day/month when a datepart is missing.
A character value is expected, either as a
format with month and day specified as
"mm-dd": e.g."06-15"for the 15th of June (The year can not be specified; for imputing the year"first"or"last"together withmin_datesormax_datesargument can be used (see examples).),-
or as a keyword:
"first","mid","last"to impute to the first/mid/last day/month. If"mid"is specified, missing components are imputed as the middle of the possible range:If both month and day are missing, they are imputed as
"06-30"(middle of the year).If only day is missing, it is imputed as
"15"(middle of the month).
The argument is ignored if
highest_imputationis less then"D". - flag_imputation
-
Whether the date imputation flag must also be derived.
If
"auto"is specified andhighest_imputationargument is not"n", then date imputation flag is derived.If
"date"is specified, then date imputation flag is derived.If
"none"is specified, then no date imputation flag is derived.Permitted Values:
"auto","date"or"none" - min_dates
-
Minimum dates
A list of dates is expected. It is ensured that the imputed date is not before any of the specified dates, e.g., that the imputed adverse event start date is not before the first treatment date. Only dates which are in the range of possible dates of the
dtcvalue are considered. The possible dates are defined by the missing parts of thedtcdate (see example below). This ensures that the non-missing parts of thedtcdate are not changed. A date or date-time object is expected. For exampleimpute_dtc_dtm( "2020-11", min_dates = list( ymd_hms("2020-12-06T12:12:12"), ymd_hms("2020-11-11T11:11:11") ), highest_imputation = "M" )returns
"2020-11-11T11:11:11"because the possible dates for"2020-11"range from"2020-11-01T00:00:00"to"2020-11-30T23:59:59". Therefore"2020-12-06T12:12:12"is ignored. Returning"2020-12-06T12:12:12"would have changed the month although it is not missing (in thedtcdate). - max_dates
-
Maximum dates
A list of dates is expected. It is ensured that the imputed date is not after any of the specified dates, e.g., that the imputed date is not after the data cut off date. Only dates which are in the range of possible dates are considered. A date or date-time object is expected.
- preserve
-
Preserve day if month is missing and day is present
For example
"2019---07"would return"2019-06-07ifpreserve = TRUE(anddate_imputation = "MID").Permitted Values:
TRUE,FALSE
Value
The input dataset with the date '--DT' (and the date imputation flag '--DTF'
if requested) added.
Details
In {admiral} we don't allow users to pick any single part of the date/time to
impute, we only enable to impute up to a highest level, i.e. you couldn't
choose to say impute months, but not days.
The presence of a '--DTF' variable is checked and if it already exists in the input dataset,
a warning is issued and '--DTF' will be overwritten.
See also
Date/Time Derivation Functions that returns variable appended to dataset:
derive_var_trtdurd(),
derive_vars_dtm(),
derive_vars_dtm_to_dt(),
derive_vars_dtm_to_tm(),
derive_vars_duration(),
derive_vars_dy()
Examples
library(tibble)
library(lubridate)
mhdt <- tribble(
~MHSTDTC,
"2019-07-18T15:25:40",
"2019-07-18T15:25",
"2019-07-18",
"2019-02",
"2019",
"2019---07",
""
)
# Create ASTDT and ASTDTF
# No imputation for partial date
derive_vars_dt(
mhdt,
new_vars_prefix = "AST",
dtc = MHSTDTC
)
#> # A tibble: 7 × 2
#> MHSTDTC ASTDT
#> <chr> <date>
#> 1 "2019-07-18T15:25:40" 2019-07-18
#> 2 "2019-07-18T15:25" 2019-07-18
#> 3 "2019-07-18" 2019-07-18
#> 4 "2019-02" NA
#> 5 "2019" NA
#> 6 "2019---07" NA
#> 7 "" NA
# Create ASTDT and ASTDTF
# Impute partial dates to first day/month
derive_vars_dt(
mhdt,
new_vars_prefix = "AST",
dtc = MHSTDTC,
highest_imputation = "M"
)
#> # A tibble: 7 × 3
#> MHSTDTC ASTDT ASTDTF
#> <chr> <date> <chr>
#> 1 "2019-07-18T15:25:40" 2019-07-18 NA
#> 2 "2019-07-18T15:25" 2019-07-18 NA
#> 3 "2019-07-18" 2019-07-18 NA
#> 4 "2019-02" 2019-02-01 D
#> 5 "2019" 2019-01-01 M
#> 6 "2019---07" 2019-01-01 M
#> 7 "" NA NA
# Impute partial dates to 6th of April
derive_vars_dt(
mhdt,
new_vars_prefix = "AST",
dtc = MHSTDTC,
highest_imputation = "M",
date_imputation = "04-06"
)
#> # A tibble: 7 × 3
#> MHSTDTC ASTDT ASTDTF
#> <chr> <date> <chr>
#> 1 "2019-07-18T15:25:40" 2019-07-18 NA
#> 2 "2019-07-18T15:25" 2019-07-18 NA
#> 3 "2019-07-18" 2019-07-18 NA
#> 4 "2019-02" 2019-02-06 D
#> 5 "2019" 2019-04-06 M
#> 6 "2019---07" 2019-04-06 M
#> 7 "" NA NA
# Create AENDT and AENDTF
# Impute partial dates to last day/month
derive_vars_dt(
mhdt,
new_vars_prefix = "AEN",
dtc = MHSTDTC,
highest_imputation = "M",
date_imputation = "last"
)
#> # A tibble: 7 × 3
#> MHSTDTC AENDT AENDTF
#> <chr> <date> <chr>
#> 1 "2019-07-18T15:25:40" 2019-07-18 NA
#> 2 "2019-07-18T15:25" 2019-07-18 NA
#> 3 "2019-07-18" 2019-07-18 NA
#> 4 "2019-02" 2019-02-28 D
#> 5 "2019" 2019-12-31 M
#> 6 "2019---07" 2019-12-31 M
#> 7 "" NA NA
# Create BIRTHDT
# Impute partial dates to 15th of June. No Date Imputation Flag
derive_vars_dt(
mhdt,
new_vars_prefix = "BIRTH",
dtc = MHSTDTC,
highest_imputation = "M",
date_imputation = "mid",
flag_imputation = "none"
)
#> # A tibble: 7 × 2
#> MHSTDTC BIRTHDT
#> <chr> <date>
#> 1 "2019-07-18T15:25:40" 2019-07-18
#> 2 "2019-07-18T15:25" 2019-07-18
#> 3 "2019-07-18" 2019-07-18
#> 4 "2019-02" 2019-02-15
#> 5 "2019" 2019-06-30
#> 6 "2019---07" 2019-06-30
#> 7 "" NA
# Impute AE start date to the first date and ensure that the imputed date
# is not before the treatment start date
adae <- tribble(
~AESTDTC, ~TRTSDTM,
"2020-12", ymd_hms("2020-12-06T12:12:12"),
"2020-11", ymd_hms("2020-12-06T12:12:12")
)
derive_vars_dt(
adae,
dtc = AESTDTC,
new_vars_prefix = "AST",
highest_imputation = "M",
min_dates = exprs(TRTSDTM)
)
#> # A tibble: 2 × 4
#> AESTDTC TRTSDTM ASTDT ASTDTF
#> <chr> <dttm> <date> <chr>
#> 1 2020-12 2020-12-06 12:12:12 2020-12-06 D
#> 2 2020-11 2020-12-06 12:12:12 2020-11-01 D
# A user imputing dates as middle month/day, i.e. date_imputation = "mid" can
# use preserve argument to "preserve" partial dates. For example, "2019---07",
# will be displayed as "2019-06-07" rather than 2019-06-15 with preserve = TRUE
derive_vars_dt(
mhdt,
new_vars_prefix = "AST",
dtc = MHSTDTC,
highest_imputation = "M",
date_imputation = "mid",
preserve = TRUE
)
#> # A tibble: 7 × 3
#> MHSTDTC ASTDT ASTDTF
#> <chr> <date> <chr>
#> 1 "2019-07-18T15:25:40" 2019-07-18 NA
#> 2 "2019-07-18T15:25" 2019-07-18 NA
#> 3 "2019-07-18" 2019-07-18 NA
#> 4 "2019-02" 2019-02-15 D
#> 5 "2019" 2019-06-30 M
#> 6 "2019---07" 2019-06-07 M
#> 7 "" NA NA
