Derives a character shift variable containing concatenated shift in values based on user-defined pairing, e.g., shift from baseline to analysis value, shift from baseline grade to analysis grade, ...
derive_var_shift(
dataset,
new_var,
from_var,
to_var,
missing_value = "NULL",
sep_val = " to "
)
Input dataset
The variables specified by the from_var
and to_var
arguments are expected to be in the dataset.
none
Name of the character shift variable to create.
none
Variable containing value to shift from.
none
Variable containing value to shift to.
none
Character string to replace missing values in from_var
or to_var
.
"NULL"
Character string to concatenate values of from_var
and to_var
.
" to "
The input dataset with the character shift variable added
new_var
is derived by concatenating the values of from_var
to values of to_var
(e.g. "NORMAL to HIGH"). When from_var
or to_var
has missing value, the
missing value is replaced by missing_value
(e.g. "NORMAL to NULL").
BDS-Findings Functions that returns variable appended to dataset:
derive_basetype_records()
,
derive_var_analysis_ratio()
,
derive_var_anrind()
,
derive_var_atoxgr()
,
derive_var_atoxgr_dir()
,
derive_var_base()
,
derive_var_chg()
,
derive_var_ontrtfl()
,
derive_var_pchg()
,
derive_vars_crit_flag()
library(tibble)
data <- tribble(
~USUBJID, ~PARAMCD, ~AVAL, ~ABLFL, ~BNRIND, ~ANRIND,
"P01", "ALB", 33, "Y", "LOW", "LOW",
"P01", "ALB", 38, NA, "LOW", "NORMAL",
"P01", "ALB", NA, NA, "LOW", NA,
"P02", "ALB", 37, "Y", "NORMAL", "NORMAL",
"P02", "ALB", 49, NA, "NORMAL", "HIGH",
"P02", "SODIUM", 147, "Y", "HIGH", "HIGH"
)
data %>%
convert_blanks_to_na() %>%
derive_var_shift(
new_var = SHIFT1,
from_var = BNRIND,
to_var = ANRIND
)
#> # A tibble: 6 × 7
#> USUBJID PARAMCD AVAL ABLFL BNRIND ANRIND SHIFT1
#> <chr> <chr> <dbl> <chr> <chr> <chr> <chr>
#> 1 P01 ALB 33 Y LOW LOW LOW to LOW
#> 2 P01 ALB 38 NA LOW NORMAL LOW to NORMAL
#> 3 P01 ALB NA NA LOW NA LOW to NULL
#> 4 P02 ALB 37 Y NORMAL NORMAL NORMAL to NORMAL
#> 5 P02 ALB 49 NA NORMAL HIGH NORMAL to HIGH
#> 6 P02 SODIUM 147 Y HIGH HIGH HIGH to HIGH
# or only populate post-baseline records
data %>%
convert_blanks_to_na() %>%
restrict_derivation(
derivation = derive_var_shift,
args = params(
new_var = SHIFT1,
from_var = BNRIND,
to_var = ANRIND
),
filter = is.na(ABLFL)
)
#> # A tibble: 6 × 7
#> USUBJID PARAMCD AVAL ABLFL BNRIND ANRIND SHIFT1
#> <chr> <chr> <dbl> <chr> <chr> <chr> <chr>
#> 1 P01 ALB 38 NA LOW NORMAL LOW to NORMAL
#> 2 P01 ALB NA NA LOW NA LOW to NULL
#> 3 P02 ALB 49 NA NORMAL HIGH NORMAL to HIGH
#> 4 P01 ALB 33 Y LOW LOW NA
#> 5 P02 ALB 37 Y NORMAL NORMAL NA
#> 6 P02 SODIUM 147 Y HIGH HIGH NA