###### General Packages
install.packages("pacman") # p_load(dplyr, ggplot2, readr) # installs any missing, then loads all
################
pacman::p_load(haven, dplyr,tidyr, purrr, glue, lubridate,stringr, EDCimport)
Upload the following SDTM datasets/exports needed to program ADAM.ADSL:
dm <- read_xpt("DM.xpt")
suppdm <- read_xpt("SUPPDM.xpt")
ds <- read_xpt("DS.xpt")
vs <- read_xpt("VS.xpt")
Merge DM and SUPPDM: Transponse SUPPDM data such that each QNAM becomes a variable
suppdmtrp <- suppdm %>%
mutate(qnam=str_to_lower(qnam)) %>%
group_by(studyid, usubjid) %>%
pivot_wider(id_cols=c(studyid,usubjid),names_from = qnam, values_from = qval)
suppdmtrp
| studyid | usubjid | race1 | race2 | racesp |
|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <chr> |
| STU001 | STU001-1002 | ASIAN | AMERICAN INDIAN OR ALASKA NATIVE | NA |
| STU001 | STU001-1003 | NA | NA | BRAZILIAN |
all_dm <- left_join(dm, suppdmtrp, by = c("studyid", "usubjid"))
all_dm
| studyid | domain | usubjid | subjid | rfstdtc | rfendtc | rfxstdtc | rfxendtc | rficdtc | rfpendtc | ⋯ | race | ethnic | armcd | arm | actarmcd | actarm | country | race1 | race2 | racesp |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | ⋯ | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> |
| STU001 | DM | STU001-1001 | 1001 | 2010-01-01 | 2010-01-01 | 2010-01-01 | ⋯ | WHITE | HISPANIC OR LATINO | SCRNFAIL | Screen Failure | SCRNFAIL | Screen Failure | USA | NA | NA | NA | |||
| STU001 | DM | STU001-1002 | 1002 | 2010-01-01 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | MULTIPLE | NOT HISPANIC OR LATINO | NOTASSGN | Not Assigned | NOTASSGN | Not Assigned | USA | ASIAN | AMERICAN INDIAN OR ALASKA NATIVE | NA | ||
| STU001 | DM | STU001-1003 | 1003 | 2010-01-03 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | OTHER | HISPANIC OR LATINO | PBO | Placebo | NOTTRT | Not Treated | USA | NA | NA | BRAZILIAN | ||
| STU001 | DM | STU001-1004 | 1004 | 2010-01-05 | 2010-02-28 | 2010-01-05T08:35 | 2010-01-25T08:45 | 2010-01-01 | 2010-02-28 | ⋯ | WHITE | HISPANIC OR LATINO | ACTIVE | Active | ACTIVE | Active | USA | NA | NA | NA |
| STU001 | DM | STU001-1005 | 1005 | 2010-02-05 | 2010-02-05T08:46 | 2010-02-12T08:30 | 2010-01-15 | 2020-02-20 | ⋯ | AMERICAN INDIAN OR ALASKA NATIVE | NOT HISPANIC OR LATINO | ACTIVE | Active | PBO | Placebo | USA | NA | NA | NA | |
| STU001 | DM | STU001-1006 | 1006 | 2010-03-02 | 2010-03-25 | 2010-03-02T08:30 | 2010-03-10T08:30 | 2010-02-18 | 2010-03-25 | ⋯ | NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER | NOT HISPANIC OR LATINO | PBO | Placebo | PBO | Placebo | USA | NA | NA | NA |
| STU001 | DM | STU001-1007 | 1007 | 2010-04-15 | 2010-06-12 | 2010-04-15T08:23 | 2010-05-06T08:12 | 2010-04-04 | 2010-06-12 | ⋯ | UNKNOWN | NOT HISPANIC OR LATINO | PBO | Placebo | PBO | Placebo | USA | NA | NA | NA |
| STU001 | DM | STU001-1008 | 1008 | 2010-06-27 | 2010-08-18 | 2010-06-27T08:45 | 2010-07-11T09:20 | 2010-06-20 | 2010-08-18 | ⋯ | NOT REPORTED | NOT HISPANIC OR LATINO | ACTIVE | Active | ACTIVE | Active | USA | NA | NA | NA |
Create variables that are directly based on input variables: trt01p trt01a trt01pn trt01an tr01sdt tr01edt rficdt lstalvdt dthdt trtsdt trtedt agegr1 agegr1n
trtdata <- all_dm %>%
mutate(trt01p = if_else(armcd == "PBO", "Placebo", if_else(armcd == "ACTIVE", "Active", "")),
trt01a = if_else(actarmcd == "PBO", "Placebo", if_else(actarmcd == "ACTIVE", "Active", "")),
trt01pn = if_else(armcd == "PBO", 1, if_else(armcd == "ACTIVE", 2, NA)),
trt01an = if_else(actarmcd == "PBO", 1, if_else(actarmcd == "ACTIVE", 2, NA))) %>%
mutate(tr01sdt = as.Date(rfxstdtc),
tr01edt = as.Date(rfxendtc),
rficdt = as.Date(rficdtc),
lstalvdt = as.Date(rfpendtc),
dthdt = as.Date(dthdtc),
trtsdt = tr01sdt,
trtedt = tr01edt) %>%
mutate(agegr1 = if_else(!is.na(age) & age < 60, "< 60 Years",
if_else(age >= 60, ">= 60 Years", "")),
agegr1n = if_else(!is.na(age) & age < 60, 1, if_else(age >= 60, 2,NA)))
select(trtdata, c('usubjid', 'trt01p','trt01a','trt01pn', 'trt01an','agegr1','agegr1n', 'ethnic'))
| usubjid | trt01p | trt01a | trt01pn | trt01an | agegr1 | agegr1n | ethnic |
|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <dbl> | <dbl> | <chr> | <dbl> | <chr> |
| STU001-1001 | NA | NA | < 60 Years | 1 | HISPANIC OR LATINO | ||
| STU001-1002 | NA | NA | < 60 Years | 1 | NOT HISPANIC OR LATINO | ||
| STU001-1003 | Placebo | 1 | NA | < 60 Years | 1 | HISPANIC OR LATINO | |
| STU001-1004 | Active | Active | 2 | 2 | < 60 Years | 1 | HISPANIC OR LATINO |
| STU001-1005 | Active | Placebo | 2 | 1 | >= 60 Years | 2 | NOT HISPANIC OR LATINO |
| STU001-1006 | Placebo | Placebo | 1 | 1 | >= 60 Years | 2 | NOT HISPANIC OR LATINO |
| STU001-1007 | Placebo | Placebo | 1 | 1 | < 60 Years | 1 | NOT HISPANIC OR LATINO |
| STU001-1008 | Active | Active | 2 | 2 | >= 60 Years | 2 | NOT HISPANIC OR LATINO |
Process disposition data for treatment and study status enrldt randdt eotstt dctreas ineot
enrldate <- ds %>%
filter(dsterm == "ENROLLED") %>%
mutate(enrldt = as.Date(dsstdtc)) %>%
select(studyid, usubjid, enrldt)
enrldate
| studyid | usubjid | enrldt |
|---|---|---|
| <chr> | <chr> | <date> |
| STU001 | STU001-1002 | 2010-01-04 |
| STU001 | STU001-1003 | 2010-01-03 |
| STU001 | STU001-1004 | 2010-01-04 |
| STU001 | STU001-1005 | 2010-02-01 |
| STU001 | STU001-1006 | 2010-03-01 |
| STU001 | STU001-1007 | 2010-04-14 |
| STU001 | STU001-1008 | 2010-06-26 |
randdate <- ds %>%
filter(dsterm == "RANDOMIZED") %>%
mutate(randdt = as.Date(dsstdtc)) %>%
select(studyid, usubjid, randdt)
randdate
| studyid | usubjid | randdt |
|---|---|---|
| <chr> | <chr> | <date> |
| STU001 | STU001-1003 | 2010-01-03 |
| STU001 | STU001-1004 | 2010-01-05 |
| STU001 | STU001-1005 | 2010-02-05 |
| STU001 | STU001-1006 | 2010-03-01 |
| STU001 | STU001-1007 | 2010-04-14 |
| STU001 | STU001-1008 | 2010-06-27 |
eotdata <- ds %>%
filter(dsscat == "END OF TREATMENT") %>%
mutate(
eotstt = case_when(
dsdecod == "COMPLETED" ~ "COMPLETED",
dsdecod != "" ~ "DISCONTINUED",
TRUE ~ NA
),
dctreas = if_else(dsdecod != "COMPLETED", dsdecod, NA),
ineot = 1
) %>%
select(studyid, usubjid, eotstt, dctreas, ineot)
eotdata
| studyid | usubjid | eotstt | dctreas | ineot |
|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <dbl> |
| STU001 | STU001-1004 | COMPLETED | NA | 1 |
| STU001 | STU001-1006 | DISCONTINUED | ADVERSE EVENT | 1 |
| STU001 | STU001-1007 | COMPLETED | NA | 1 |
| STU001 | STU001-1008 | DISCONTINUED | SUBJECT REQUEST | 1 |
eosdata <- ds %>%
filter(dsscat == "END OF STUDY") %>%
mutate(
eosstt = case_when(
dsdecod == "COMPLETED" ~ "COMPLETED",
dsdecod != "" ~ "DISCONTINUED",
TRUE ~ NA
),
dcsreas = if_else(dsdecod != "COMPLETED", dsdecod, NA),
eosdt = as.Date(dsstdtc),
ineos = 1
) %>%
select(studyid, usubjid, eosstt, dcsreas, eosdt, ineos)
eosdata
| studyid | usubjid | eosstt | dcsreas | eosdt | ineos |
|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <date> | <dbl> |
| STU001 | STU001-1002 | DISCONTINUED | WITHDRAWL OF CONSENT | 2010-01-05 | 1 |
| STU001 | STU001-1003 | DISCONTINUED | DEATH | 2010-01-05 | 1 |
| STU001 | STU001-1004 | COMPLETED | NA | 2010-02-28 | 1 |
| STU001 | STU001-1006 | DISCONTINUED | ADVERSE EVENT | 2010-03-25 | 1 |
| STU001 | STU001-1007 | COMPLETED | NA | 2010-06-12 | 1 |
| STU001 | STU001-1008 | DISCONTINUED | SUBJECT REQUEST | 2010-08-18 | 1 |
Baseline variables from vital signs; heightbl weightbl
heightbl <- vs %>%
filter(vsblfl == "Y" & vstestcd == "HEIGHT") %>%
select(studyid, usubjid, vsstresn) %>%
rename(heightbl = vsstresn)
heightbl
weightbl <- vs %>%
filter(vsblfl == "Y" & vstestcd == "WEIGHT") %>%
select(studyid, usubjid, vsstresn) %>%
rename(weightbl = vsstresn)
weightbl
| studyid | usubjid | heightbl |
|---|---|---|
| <chr> | <chr> | <dbl> |
| STU001 | STU001-1004 | 177.00 |
| STU001 | STU001-1005 | 66.14 |
| STU001 | STU001-1006 | 160.00 |
| STU001 | STU001-1007 | 178.00 |
| studyid | usubjid | weightbl |
|---|---|---|
| <chr> | <chr> | <dbl> |
| STU001 | STU001-1004 | 87.3 |
| STU001 | STU001-1005 | 76.1 |
| STU001 | STU001-1006 | 60.9 |
| STU001 | STU001-1007 | 85.4 |
Merge all the information in created dataset
all_dframes <- list(trtdata, enrldate, randdate, eotdata, eosdata, heightbl, weightbl)
all_dframes
| studyid | domain | usubjid | subjid | rfstdtc | rfendtc | rfxstdtc | rfxendtc | rficdtc | rfpendtc | ⋯ | trt01an | tr01sdt | tr01edt | rficdt | lstalvdt | dthdt | trtsdt | trtedt | agegr1 | agegr1n |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | ⋯ | <dbl> | <date> | <date> | <date> | <date> | <date> | <date> | <date> | <chr> | <dbl> |
| STU001 | DM | STU001-1001 | 1001 | 2010-01-01 | 2010-01-01 | 2010-01-01 | ⋯ | NA | NA | NA | 2010-01-01 | 2010-01-01 | NA | NA | NA | < 60 Years | 1 | |||
| STU001 | DM | STU001-1002 | 1002 | 2010-01-01 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | NA | NA | NA | 2010-01-01 | 2010-01-05 | NA | NA | NA | < 60 Years | 1 | ||
| STU001 | DM | STU001-1003 | 1003 | 2010-01-03 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | NA | NA | NA | 2010-01-01 | 2010-01-05 | 2010-01-05 | NA | NA | < 60 Years | 1 | ||
| STU001 | DM | STU001-1004 | 1004 | 2010-01-05 | 2010-02-28 | 2010-01-05T08:35 | 2010-01-25T08:45 | 2010-01-01 | 2010-02-28 | ⋯ | 2 | 2010-01-05 | 2010-01-25 | 2010-01-01 | 2010-02-28 | NA | 2010-01-05 | 2010-01-25 | < 60 Years | 1 |
| STU001 | DM | STU001-1005 | 1005 | 2010-02-05 | 2010-02-05T08:46 | 2010-02-12T08:30 | 2010-01-15 | 2020-02-20 | ⋯ | 1 | 2010-02-05 | 2010-02-12 | 2010-01-15 | 2020-02-20 | NA | 2010-02-05 | 2010-02-12 | >= 60 Years | 2 | |
| STU001 | DM | STU001-1006 | 1006 | 2010-03-02 | 2010-03-25 | 2010-03-02T08:30 | 2010-03-10T08:30 | 2010-02-18 | 2010-03-25 | ⋯ | 1 | 2010-03-02 | 2010-03-10 | 2010-02-18 | 2010-03-25 | NA | 2010-03-02 | 2010-03-10 | >= 60 Years | 2 |
| STU001 | DM | STU001-1007 | 1007 | 2010-04-15 | 2010-06-12 | 2010-04-15T08:23 | 2010-05-06T08:12 | 2010-04-04 | 2010-06-12 | ⋯ | 1 | 2010-04-15 | 2010-05-06 | 2010-04-04 | 2010-06-12 | NA | 2010-04-15 | 2010-05-06 | < 60 Years | 1 |
| STU001 | DM | STU001-1008 | 1008 | 2010-06-27 | 2010-08-18 | 2010-06-27T08:45 | 2010-07-11T09:20 | 2010-06-20 | 2010-08-18 | ⋯ | 2 | 2010-06-27 | 2010-07-11 | 2010-06-20 | 2010-08-18 | NA | 2010-06-27 | 2010-07-11 | >= 60 Years | 2 |
| studyid | usubjid | enrldt |
|---|---|---|
| <chr> | <chr> | <date> |
| STU001 | STU001-1002 | 2010-01-04 |
| STU001 | STU001-1003 | 2010-01-03 |
| STU001 | STU001-1004 | 2010-01-04 |
| STU001 | STU001-1005 | 2010-02-01 |
| STU001 | STU001-1006 | 2010-03-01 |
| STU001 | STU001-1007 | 2010-04-14 |
| STU001 | STU001-1008 | 2010-06-26 |
| studyid | usubjid | randdt |
|---|---|---|
| <chr> | <chr> | <date> |
| STU001 | STU001-1003 | 2010-01-03 |
| STU001 | STU001-1004 | 2010-01-05 |
| STU001 | STU001-1005 | 2010-02-05 |
| STU001 | STU001-1006 | 2010-03-01 |
| STU001 | STU001-1007 | 2010-04-14 |
| STU001 | STU001-1008 | 2010-06-27 |
| studyid | usubjid | eotstt | dctreas | ineot |
|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <dbl> |
| STU001 | STU001-1004 | COMPLETED | NA | 1 |
| STU001 | STU001-1006 | DISCONTINUED | ADVERSE EVENT | 1 |
| STU001 | STU001-1007 | COMPLETED | NA | 1 |
| STU001 | STU001-1008 | DISCONTINUED | SUBJECT REQUEST | 1 |
| studyid | usubjid | eosstt | dcsreas | eosdt | ineos |
|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <date> | <dbl> |
| STU001 | STU001-1002 | DISCONTINUED | WITHDRAWL OF CONSENT | 2010-01-05 | 1 |
| STU001 | STU001-1003 | DISCONTINUED | DEATH | 2010-01-05 | 1 |
| STU001 | STU001-1004 | COMPLETED | NA | 2010-02-28 | 1 |
| STU001 | STU001-1006 | DISCONTINUED | ADVERSE EVENT | 2010-03-25 | 1 |
| STU001 | STU001-1007 | COMPLETED | NA | 2010-06-12 | 1 |
| STU001 | STU001-1008 | DISCONTINUED | SUBJECT REQUEST | 2010-08-18 | 1 |
| studyid | usubjid | heightbl |
|---|---|---|
| <chr> | <chr> | <dbl> |
| STU001 | STU001-1004 | 177.00 |
| STU001 | STU001-1005 | 66.14 |
| STU001 | STU001-1006 | 160.00 |
| STU001 | STU001-1007 | 178.00 |
| studyid | usubjid | weightbl |
|---|---|---|
| <chr> | <chr> | <dbl> |
| STU001 | STU001-1004 | 87.3 |
| STU001 | STU001-1005 | 76.1 |
| STU001 | STU001-1006 | 60.9 |
| STU001 | STU001-1007 | 85.4 |
adsltemp1 <- reduce(all_dframes, left_join, by = c("studyid", "usubjid"))
adsltemp1
| studyid | domain | usubjid | subjid | rfstdtc | rfendtc | rfxstdtc | rfxendtc | rficdtc | rfpendtc | ⋯ | randdt | eotstt | dctreas | ineot | eosstt | dcsreas | eosdt | ineos | heightbl | weightbl |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | ⋯ | <date> | <chr> | <chr> | <dbl> | <chr> | <chr> | <date> | <dbl> | <dbl> | <dbl> |
| STU001 | DM | STU001-1001 | 1001 | 2010-01-01 | 2010-01-01 | 2010-01-01 | ⋯ | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | |||
| STU001 | DM | STU001-1002 | 1002 | 2010-01-01 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | NA | NA | NA | NA | DISCONTINUED | WITHDRAWL OF CONSENT | 2010-01-05 | 1 | NA | NA | ||
| STU001 | DM | STU001-1003 | 1003 | 2010-01-03 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | 2010-01-03 | NA | NA | NA | DISCONTINUED | DEATH | 2010-01-05 | 1 | NA | NA | ||
| STU001 | DM | STU001-1004 | 1004 | 2010-01-05 | 2010-02-28 | 2010-01-05T08:35 | 2010-01-25T08:45 | 2010-01-01 | 2010-02-28 | ⋯ | 2010-01-05 | COMPLETED | NA | 1 | COMPLETED | NA | 2010-02-28 | 1 | 177.00 | 87.3 |
| STU001 | DM | STU001-1005 | 1005 | 2010-02-05 | 2010-02-05T08:46 | 2010-02-12T08:30 | 2010-01-15 | 2020-02-20 | ⋯ | 2010-02-05 | NA | NA | NA | NA | NA | NA | NA | 66.14 | 76.1 | |
| STU001 | DM | STU001-1006 | 1006 | 2010-03-02 | 2010-03-25 | 2010-03-02T08:30 | 2010-03-10T08:30 | 2010-02-18 | 2010-03-25 | ⋯ | 2010-03-01 | DISCONTINUED | ADVERSE EVENT | 1 | DISCONTINUED | ADVERSE EVENT | 2010-03-25 | 1 | 160.00 | 60.9 |
| STU001 | DM | STU001-1007 | 1007 | 2010-04-15 | 2010-06-12 | 2010-04-15T08:23 | 2010-05-06T08:12 | 2010-04-04 | 2010-06-12 | ⋯ | 2010-04-14 | COMPLETED | NA | 1 | COMPLETED | NA | 2010-06-12 | 1 | 178.00 | 85.4 |
| STU001 | DM | STU001-1008 | 1008 | 2010-06-27 | 2010-08-18 | 2010-06-27T08:45 | 2010-07-11T09:20 | 2010-06-20 | 2010-08-18 | ⋯ | 2010-06-27 | DISCONTINUED | SUBJECT REQUEST | 1 | DISCONTINUED | SUBJECT REQUEST | 2010-08-18 | 1 | NA | NA |
Create variables/assign values to existing variables which are dependent on their variables; saffl randfl enrlfl complfl eotstt eosstt trtdurd
adsltemp2 <- adsltemp1 %>%
mutate(
saffl = if_else(!is.na(trtsdt), "Y", "N"),
randfl = if_else(!is.na(randdt), "Y", "N"),
enrlfl = if_else(!is.na(enrldt), "Y", "N"),
complfl = if_else(eosstt == "COMPLETED", "Y", "N"),
eotstt = if_else((eotstt == "" | is.na(eotstt)) & is.na(ineot) & saffl == "Y", "ONGOING", eotstt),
eosstt = if_else((eosstt == "" | is.na(eosstt)) & is.na(ineos) & saffl == "Y", "ONGOING", eosstt),
trtdurd = if_else(!is.na(trtsdt) & !is.na(trtedt), trtedt - trtsdt + 1, NA),
trtdurd = as.numeric(trtdurd)
)
adsltemp2
| studyid | domain | usubjid | subjid | rfstdtc | rfendtc | rfxstdtc | rfxendtc | rficdtc | rfpendtc | ⋯ | dcsreas | eosdt | ineos | heightbl | weightbl | saffl | randfl | enrlfl | complfl | trtdurd |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | ⋯ | <chr> | <date> | <dbl> | <dbl> | <dbl> | <chr> | <chr> | <chr> | <chr> | <dbl> |
| STU001 | DM | STU001-1001 | 1001 | 2010-01-01 | 2010-01-01 | 2010-01-01 | ⋯ | NA | NA | NA | NA | NA | N | N | N | NA | NA | |||
| STU001 | DM | STU001-1002 | 1002 | 2010-01-01 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | WITHDRAWL OF CONSENT | 2010-01-05 | 1 | NA | NA | N | N | Y | N | NA | ||
| STU001 | DM | STU001-1003 | 1003 | 2010-01-03 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | DEATH | 2010-01-05 | 1 | NA | NA | N | Y | Y | N | NA | ||
| STU001 | DM | STU001-1004 | 1004 | 2010-01-05 | 2010-02-28 | 2010-01-05T08:35 | 2010-01-25T08:45 | 2010-01-01 | 2010-02-28 | ⋯ | NA | 2010-02-28 | 1 | 177.00 | 87.3 | Y | Y | Y | Y | 21 |
| STU001 | DM | STU001-1005 | 1005 | 2010-02-05 | 2010-02-05T08:46 | 2010-02-12T08:30 | 2010-01-15 | 2020-02-20 | ⋯ | NA | NA | NA | 66.14 | 76.1 | Y | Y | Y | NA | 8 | |
| STU001 | DM | STU001-1006 | 1006 | 2010-03-02 | 2010-03-25 | 2010-03-02T08:30 | 2010-03-10T08:30 | 2010-02-18 | 2010-03-25 | ⋯ | ADVERSE EVENT | 2010-03-25 | 1 | 160.00 | 60.9 | Y | Y | Y | N | 9 |
| STU001 | DM | STU001-1007 | 1007 | 2010-04-15 | 2010-06-12 | 2010-04-15T08:23 | 2010-05-06T08:12 | 2010-04-04 | 2010-06-12 | ⋯ | NA | 2010-06-12 | 1 | 178.00 | 85.4 | Y | Y | Y | Y | 22 |
| STU001 | DM | STU001-1008 | 1008 | 2010-06-27 | 2010-08-18 | 2010-06-27T08:45 | 2010-07-11T09:20 | 2010-06-20 | 2010-08-18 | ⋯ | SUBJECT REQUEST | 2010-08-18 | 1 | NA | NA | Y | Y | Y | N | 15 |
Replace NA with missing
adsltemp3 <- adsltemp2 %>%
mutate(across(where(is.character), ~if_else(is.na(.), "", .)))
adsltemp3
| studyid | domain | usubjid | subjid | rfstdtc | rfendtc | rfxstdtc | rfxendtc | rficdtc | rfpendtc | ⋯ | dcsreas | eosdt | ineos | heightbl | weightbl | saffl | randfl | enrlfl | complfl | trtdurd |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | ⋯ | <chr> | <date> | <dbl> | <dbl> | <dbl> | <chr> | <chr> | <chr> | <chr> | <dbl> |
| STU001 | DM | STU001-1001 | 1001 | 2010-01-01 | 2010-01-01 | 2010-01-01 | ⋯ | NA | NA | NA | NA | N | N | N | NA | |||||
| STU001 | DM | STU001-1002 | 1002 | 2010-01-01 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | WITHDRAWL OF CONSENT | 2010-01-05 | 1 | NA | NA | N | N | Y | N | NA | ||
| STU001 | DM | STU001-1003 | 1003 | 2010-01-03 | 2010-01-05 | 2010-01-01 | 2010-01-05 | ⋯ | DEATH | 2010-01-05 | 1 | NA | NA | N | Y | Y | N | NA | ||
| STU001 | DM | STU001-1004 | 1004 | 2010-01-05 | 2010-02-28 | 2010-01-05T08:35 | 2010-01-25T08:45 | 2010-01-01 | 2010-02-28 | ⋯ | 2010-02-28 | 1 | 177.00 | 87.3 | Y | Y | Y | Y | 21 | |
| STU001 | DM | STU001-1005 | 1005 | 2010-02-05 | 2010-02-05T08:46 | 2010-02-12T08:30 | 2010-01-15 | 2020-02-20 | ⋯ | NA | NA | 66.14 | 76.1 | Y | Y | Y | 8 | |||
| STU001 | DM | STU001-1006 | 1006 | 2010-03-02 | 2010-03-25 | 2010-03-02T08:30 | 2010-03-10T08:30 | 2010-02-18 | 2010-03-25 | ⋯ | ADVERSE EVENT | 2010-03-25 | 1 | 160.00 | 60.9 | Y | Y | Y | N | 9 |
| STU001 | DM | STU001-1007 | 1007 | 2010-04-15 | 2010-06-12 | 2010-04-15T08:23 | 2010-05-06T08:12 | 2010-04-04 | 2010-06-12 | ⋯ | 2010-06-12 | 1 | 178.00 | 85.4 | Y | Y | Y | Y | 22 | |
| STU001 | DM | STU001-1008 | 1008 | 2010-06-27 | 2010-08-18 | 2010-06-27T08:45 | 2010-07-11T09:20 | 2010-06-20 | 2010-08-18 | ⋯ | SUBJECT REQUEST | 2010-08-18 | 1 | NA | NA | Y | Y | Y | N | 15 |
varlist <- c("STUDYID", "USUBJID", "SUBJID", "SITEID", "AGE", "AGEU", "AGEGR1", "AGEGR1N", "SEX", "RACE", "RACE1", "RACE2", "RACESP", "SAFFL", "COMPLFL", "RANDFL", "ENRLFL", "ARM", "ACTARM", "TRT01P", "TRT01PN", "TRT01A", "TRT01AN", "TRTSDT", "TRTEDT", "TR01SDT", "TR01EDT", "EOSSTT", "EOSDT", "DCSREAS", "EOTSTT", "DCTREAS", "RFICDT", "ENRLDT", "RANDDT", "LSTALVDT", "TRTDURD", "DTHDT", "HEIGHTBL", "WEIGHTBL")
adsl <- adsltemp3 %>%
rename_all(toupper) %>%
select(all_of(varlist))
adsl
| STUDYID | USUBJID | SUBJID | SITEID | AGE | AGEU | AGEGR1 | AGEGR1N | SEX | RACE | ⋯ | EOTSTT | DCTREAS | RFICDT | ENRLDT | RANDDT | LSTALVDT | TRTDURD | DTHDT | HEIGHTBL | WEIGHTBL |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <chr> | <chr> | <chr> | <chr> | <dbl> | <chr> | <chr> | <dbl> | <chr> | <chr> | ⋯ | <chr> | <chr> | <date> | <date> | <date> | <date> | <dbl> | <date> | <dbl> | <dbl> |
| STU001 | STU001-1001 | 1001 | 10 | 35 | YEARS | < 60 Years | 1 | M | WHITE | ⋯ | 2010-01-01 | NA | NA | 2010-01-01 | NA | NA | NA | NA | ||
| STU001 | STU001-1002 | 1002 | 10 | 40 | YEARS | < 60 Years | 1 | F | MULTIPLE | ⋯ | 2010-01-01 | 2010-01-04 | NA | 2010-01-05 | NA | NA | NA | NA | ||
| STU001 | STU001-1003 | 1003 | 10 | 40 | YEARS | < 60 Years | 1 | M | OTHER | ⋯ | 2010-01-01 | 2010-01-03 | 2010-01-03 | 2010-01-05 | NA | 2010-01-05 | NA | NA | ||
| STU001 | STU001-1004 | 1004 | 10 | 38 | YEARS | < 60 Years | 1 | M | WHITE | ⋯ | COMPLETED | 2010-01-01 | 2010-01-04 | 2010-01-05 | 2010-02-28 | 21 | NA | 177.00 | 87.3 | |
| STU001 | STU001-1005 | 1005 | 10 | 64 | YEARS | >= 60 Years | 2 | M | AMERICAN INDIAN OR ALASKA NATIVE | ⋯ | ONGOING | 2010-01-15 | 2010-02-01 | 2010-02-05 | 2020-02-20 | 8 | NA | 66.14 | 76.1 | |
| STU001 | STU001-1006 | 1006 | 10 | 75 | YEARS | >= 60 Years | 2 | F | NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER | ⋯ | DISCONTINUED | ADVERSE EVENT | 2010-02-18 | 2010-03-01 | 2010-03-01 | 2010-03-25 | 9 | NA | 160.00 | 60.9 |
| STU001 | STU001-1007 | 1007 | 10 | 32 | YEARS | < 60 Years | 1 | M | UNKNOWN | ⋯ | COMPLETED | 2010-04-04 | 2010-04-14 | 2010-04-14 | 2010-06-12 | 22 | NA | 178.00 | 85.4 | |
| STU001 | STU001-1008 | 1008 | 10 | 83 | YEARS | >= 60 Years | 2 | F | NOT REPORTED | ⋯ | DISCONTINUED | SUBJECT REQUEST | 2010-06-20 | 2010-06-26 | 2010-06-27 | 2010-08-18 | 15 | NA | NA | NA |
colnames(adsl)
write_xpt(adsl, "adsl.xpt")