Feature Idea
When using raw data leveraging already SDTM look-a-like names, currently the hardcode_ct call is not working, ie if raw_var name = tgt_var name the call fails (see code given below).
This is working for assign_ct, hence it might be nice to have the same functionality also for hardcode_ct.
Relevant Input
No response
Relevant Output
No response
Reproducible Example/Pseudo Code
library(sdtm.oak)
library(dplyr)
Read Specification
study_ct <- read.csv(system.file("raw_data/sdtm_ct.csv",
package = "sdtm.oak"
))
Read in raw data
cm_raw <- read.csv(system.file("raw_data/cm_raw_data.csv",
package = "sdtm.oak"
)) %>%
mutate(
CMSTRTPT=MDPRIOR
) %>%
generate_oak_id_vars(
pat_var = "PATNUM",
raw_src = "cm_raw"
)
dm <- read.csv(system.file("raw_data/dm.csv",
package = "sdtm.oak"
))
Not working example due to tgt_var=raw_var, exactly the same code as in vignette except the variable name
cm_fail <-
Derive topic variable
assign_no_ct(
raw_dat = cm_raw,
raw_var = "MDRAW",
tgt_var = "CMTRT"
) %>%
Derive CMGRPID
assign_no_ct(
raw_dat = cm_raw,
raw_var = "MDNUM",
tgt_var = "CMGRPID",
id_vars = oak_id_vars()
) %>%
DERIVE CMINDC
assign_no_ct(
raw_dat = cm_raw,
raw_var = "MDIND",
tgt_var = "CMINDC",
id_vars = oak_id_vars()
) %>%
Derive CMSTDTC. This function calls create_iso8601
assign_datetime(
raw_dat = cm_raw,
raw_var = c("MDBDR", "MDBTM"),
tgt_var = "CMSTDTC",
raw_fmt = c(list(c("d-m-y", "dd mmm yyyy")), "H:M"),
raw_unk = c("UN", "UNK")
) %>%
Derive qualifier CMSTRTPT Annotation text is If CMSTRTPT == 1 then CM.CMSTRTPT = 'BEFORE'
hardcode_ct(
raw_dat = condition_add(cm_raw, CMSTRTPT == "1"),
raw_var = "CMSTRTPT",
tgt_var = "CMSTRTPT",
tgt_val = "BEFORE",
ct_spec = study_ct,
ct_clst = "C66728",
id_vars = oak_id_vars()
)
leading to
Error in dplyr::mutate():
ℹ In argument: CMSTRTPT = dplyr::if_else(...).
Caused by error in dplyr::coalesce():
! Can't combine ..1 and ..2 .
Run rlang::last_trace() to see where the error occurred.
Feature Idea
When using raw data leveraging already SDTM look-a-like names, currently the hardcode_ct call is not working, ie if raw_var name = tgt_var name the call fails (see code given below).
This is working for assign_ct, hence it might be nice to have the same functionality also for hardcode_ct.
Relevant Input
No response
Relevant Output
No response
Reproducible Example/Pseudo Code
library(sdtm.oak)
library(dplyr)
Read Specification
study_ct <- read.csv(system.file("raw_data/sdtm_ct.csv",
package = "sdtm.oak"
))
Read in raw data
cm_raw <- read.csv(system.file("raw_data/cm_raw_data.csv",
package = "sdtm.oak"
)) %>%
mutate(
CMSTRTPT=MDPRIOR
) %>%
generate_oak_id_vars(
pat_var = "PATNUM",
raw_src = "cm_raw"
)
dm <- read.csv(system.file("raw_data/dm.csv",
package = "sdtm.oak"
))
Not working example due to tgt_var=raw_var, exactly the same code as in vignette except the variable name
cm_fail <-
Derive topic variable
assign_no_ct(
raw_dat = cm_raw,
raw_var = "MDRAW",
tgt_var = "CMTRT"
) %>%
Derive CMGRPID
assign_no_ct(
raw_dat = cm_raw,
raw_var = "MDNUM",
tgt_var = "CMGRPID",
id_vars = oak_id_vars()
) %>%
DERIVE CMINDC
assign_no_ct(
raw_dat = cm_raw,
raw_var = "MDIND",
tgt_var = "CMINDC",
id_vars = oak_id_vars()
) %>%
Derive CMSTDTC. This function calls create_iso8601
assign_datetime(
raw_dat = cm_raw,
raw_var = c("MDBDR", "MDBTM"),
tgt_var = "CMSTDTC",
raw_fmt = c(list(c("d-m-y", "dd mmm yyyy")), "H:M"),
raw_unk = c("UN", "UNK")
) %>%
Derive qualifier CMSTRTPT Annotation text is If CMSTRTPT == 1 then CM.CMSTRTPT = 'BEFORE'
hardcode_ct(
raw_dat = condition_add(cm_raw, CMSTRTPT == "1"),
raw_var = "CMSTRTPT",
tgt_var = "CMSTRTPT",
tgt_val = "BEFORE",
ct_spec = study_ct,
ct_clst = "C66728",
id_vars = oak_id_vars()
)
leading to
Error in
dplyr::mutate():ℹ In argument:
CMSTRTPT = dplyr::if_else(...).Caused by error in
dplyr::coalesce():! Can't combine
..1and..2.Run
rlang::last_trace()to see where the error occurred.