Observed exposure or treatment
trtObserve(dt, formulas, logit.link = FALSE, grpName = "trtGrp")An integer (group) ranging from 1 to length of the probability vector
def <- defData(varname = "male", dist = "binary", formula = .5, id = "cid")
def <- defData(def, varname = "over65", dist = "binary", formula = "-1.7 + .8*male", link = "logit")
def <- defData(def, varname = "baseDBP", dist = "normal", formula = 70, variance = 40)
dtstudy <- genData(1000, def)
dtstudy
#> Key: <cid>
#>         cid  male over65  baseDBP
#>       <int> <int>  <int>    <num>
#>    1:     1     0      0 64.36794
#>    2:     2     1      0 62.62015
#>    3:     3     0      0 76.14085
#>    4:     4     0      0 73.02500
#>    5:     5     0      0 65.15298
#>   ---                            
#>  996:   996     1      0 52.00301
#>  997:   997     0      0 65.74322
#>  998:   998     0      0 84.24352
#>  999:   999     1      0 74.71579
#> 1000:  1000     0      1 82.82182
formula1 <- c("-2 + 2*male - .5*over65", "-1 + 2*male + .5*over65")
dtObs <- trtObserve(dtstudy, formulas = formula1, logit.link = TRUE, grpName = "exposure")
dtObs
#> Key: <cid>
#>         cid exposure  male over65  baseDBP
#>       <int>    <int> <int>  <int>    <num>
#>    1:     1        3     0      0 64.36794
#>    2:     2        3     1      0 62.62015
#>    3:     3        2     0      0 76.14085
#>    4:     4        1     0      0 73.02500
#>    5:     5        3     0      0 65.15298
#>   ---                                     
#>  996:   996        2     1      0 52.00301
#>  997:   997        3     0      0 65.74322
#>  998:   998        3     0      0 84.24352
#>  999:   999        2     1      0 74.71579
#> 1000:  1000        3     0      1 82.82182
# Check actual distributions
dtObs[, .(pctMale = round(mean(male), 2)), keyby = exposure]
#> Key: <exposure>
#>    exposure pctMale
#>       <int>   <num>
#> 1:        1    0.67
#> 2:        2    0.71
#> 3:        3    0.21
dtObs[, .(pctMale = round(mean(over65), 2)), keyby = exposure]
#> Key: <exposure>
#>    exposure pctMale
#>       <int>   <num>
#> 1:        1    0.11
#> 2:        2    0.29
#> 3:        3    0.14
dtSum <- dtObs[, .N, keyby = .(male, over65, exposure)]
dtSum[, grpPct := round(N / sum(N), 2), keyby = .(male, over65)]
#> Key: <male, over65>
#>      male over65 exposure     N grpPct
#>     <int>  <int>    <int> <int>  <num>
#>  1:     0      0        1    40   0.09
#>  2:     0      0        2   111   0.25
#>  3:     0      0        3   285   0.65
#>  4:     0      1        1     3   0.05
#>  5:     0      1        2    24   0.39
#>  6:     0      1        3    35   0.56
#>  7:     1      0        1    78   0.22
#>  8:     1      0        2   217   0.60
#>  9:     1      0        3    66   0.18
#> 10:     1      1        1    11   0.08
#> 11:     1      1        2   109   0.77
#> 12:     1      1        3    21   0.15
dtSum
#> Key: <male, over65>
#>      male over65 exposure     N grpPct
#>     <int>  <int>    <int> <int>  <num>
#>  1:     0      0        1    40   0.09
#>  2:     0      0        2   111   0.25
#>  3:     0      0        3   285   0.65
#>  4:     0      1        1     3   0.05
#>  5:     0      1        2    24   0.39
#>  6:     0      1        3    35   0.56
#>  7:     1      0        1    78   0.22
#>  8:     1      0        2   217   0.60
#>  9:     1      0        3    66   0.18
#> 10:     1      1        1    11   0.08
#> 11:     1      1        2   109   0.77
#> 12:     1      1        3    21   0.15