dmtools

Build Status codecov

Installation

devtools::install_github("chachabooms/dmtools")
library(dmtools)

Overview

For checking the dataset from EDC in clinical trials. Notice, your dataset should have a postfix( _post ) or a prefix( pre_ ) in the names of variables. Column names should be unique.

Usage

For example, you want to check laboratory values, you need to create the excel table like in the example.

lab reference ranges
age_min age_max sex human_name name_lab_vals name_is_norm lab_vals_min lab_vals_max
18 45 f|m gluc gluc gluc_res 3.9 5.9
18 45 m ast ast ast_res 0 42
18 45 f ast ast ast_res 0 39
dataset
id age sex gluc_post gluc_res_post ast_post ast_res_post
01 19 f 5.5 norm 30 norm
02 20 m 4.1 NA 48 norm
03 22 m 9.7 norm 31 norm
# "norm" and "no" it is an example, necessary variable for the estimate, get from the dataset
refs <- system.file("labs_refer.xlsx", package = "dmtools")
obj_lab <- lab(refs, id, age, sex, "norm", "no")
obj_lab <- obj_lab %>% check(df)

# ok - analysis, which has a correct estimate of the result
obj_lab %>% choose_test("ok")
#>   id age sex human_lab  name_lab      refs lab_vals is_norm vals_to_dbl
#> 1 01  19   f      gluc gluc_post 3.9 - 5.9      5.5    norm         5.5
#> 2 01  19   f       ast  ast_post    0 - 39       30    norm        30.0
#> 3 03  22   m       ast  ast_post    0 - 42       31    norm        31.0
#>   auto_norm
#> 1      norm
#> 2      norm
#> 3      norm

# mis - analysis, which has an incorrect estimate of the result
obj_lab %>% choose_test("mis")
#>   id age sex human_lab  name_lab      refs lab_vals is_norm vals_to_dbl
#> 1 02  20   m       ast  ast_post    0 - 42       48    norm        48.0
#> 2 03  22   m      gluc gluc_post 3.9 - 5.9      9.7    norm         9.7
#>   auto_norm
#> 1        no
#> 2        no

# skip - analysis, which has an empty value of the estimate
obj_lab %>% choose_test("skip")
#>   id age sex human_lab  name_lab      refs lab_vals is_norm vals_to_dbl
#> 1 02  20   m      gluc gluc_post 3.9 - 5.9      4.1    <NA>         4.1
#>   auto_norm
#> 1      <NA>
strange_dataset
id age sex gluc_post gluc_res_post ast_post ast_res_post
01 19 f 5,5 norm < 5 norm
02 20 m 4,1 NA 48 norm
03 22 m 9,7 norm 31 norm
# dmtools can work with the dataset as strange_df
obj_lab <- obj_lab %>% check(strange_df)

# dmtools can understand the value with a comma like 6,6 
obj_lab %>% choose_test("ok")
#>   id age sex human_lab  name_lab      refs lab_vals is_norm vals_to_dbl
#> 1 01  19   f      gluc gluc_post 3.9 - 5.9      5,5    norm         5.5
#> 2 03  22   m       ast  ast_post    0 - 42       31    norm        31.0
#>   auto_norm
#> 1      norm
#> 2      norm

# Notice, if dmtools can't understand the value of lab_vals e.g. < 5, it puts Inf in the vals_to_dbl
obj_lab %>% choose_test("mis")
#>   id age sex human_lab  name_lab      refs lab_vals is_norm vals_to_dbl
#> 1 01  19   f       ast  ast_post    0 - 39      < 5    norm         Inf
#> 2 02  20   m       ast  ast_post    0 - 42       48    norm        48.0
#> 3 03  22   m      gluc gluc_post 3.9 - 5.9      9,7    norm         9.7
#>   auto_norm
#> 1        no
#> 2        no
#> 3        no

obj_lab %>% choose_test("skip")
#>   id age sex human_lab  name_lab      refs lab_vals is_norm vals_to_dbl
#> 1 02  20   m      gluc gluc_post 3.9 - 5.9      4,1    <NA>         4.1
#>   auto_norm
#> 1      <NA>