tableone CreateContTable() test
References
Load data
### Load dataset
library(survival)
data(pbc)
head(pbc)
id time status trt age sex ascites hepato spiders edema bili chol albumin copper alk.phos ast trig platelet
1 1 400 2 1 58.77 f 1 1 1 1.0 14.5 261 2.60 156 1718 137.95 172 190
2 2 4500 0 1 56.45 f 0 1 1 0.0 1.1 302 4.14 54 7395 113.52 88 221
3 3 1012 2 1 70.07 m 0 0 0 0.5 1.4 176 3.48 210 516 96.10 55 151
4 4 1925 2 1 54.74 f 0 1 1 0.5 1.8 244 2.54 64 6122 60.63 92 183
5 5 1504 1 2 38.11 f 0 1 1 0.0 3.4 279 3.53 143 671 113.15 72 136
6 6 2503 2 2 66.26 f 0 1 0 0.0 0.8 248 3.98 50 944 93.00 63 NA
protime stage
1 12.2 4
2 10.6 3
3 12.0 4
4 10.3 4
5 10.9 3
6 11.0 3
## Group by "status" (3 groups).
## Use c("time","age","bili","chol","albumin","copper","alk.phos","ast","trig","platelet","protime")
##
## age: in years
## albumin: serum albumin (g/dl)
## alk.phos: alkaline phosphotase (U/liter)
## ascites: presence of ascites
## ast: aspartate aminotransferase, once called SGOT (U/ml)
## bili: serum bilirunbin (mg/dl)
## chol: serum cholesterol (mg/dl)
## copper: urine copper (ug/day)
## edema: 0 no edema, 0.5 untreated or successfully treated
## 1 edema despite diuretic therapy
## hepato: presence of hepatomegaly or enlarged liver
## id: case number
## platelet: platelet count
## protime: standardised blood clotting time
## sex: m/f
## spiders: blood vessel malformations in the skin
## stage: histologic stage of disease (needs biopsy)
## status: status at endpoint, 0/1/2 for censored, transplant, dead
## time: number of days between registration and the earlier of death,
## transplantion, or study analysis in July, 1986
## trt: 1/2/NA for D-penicillmain, placebo, not randomised
## trig: triglycerides (mg/dl)
Load functions
### Load CreateContTable and related methods
source("../tableone/R/CreateContTable.R") # Based on Deducer::descriptive.table()
source("../tableone/R/print.ContTable.R")
source("../tableone/R/summary.ContTable.R")
## Usesage
## CreateContTable(vars, # vector of characters
## strata, # single element character vector
## data, # data frame
## nonnormal = FALSE, # Nonormal flag for testing
## test = FALSE, # Whether to put p-values
## )
Define variables for testing
### Define variables
vars <- c("time","age","bili","chol","albumin","copper","alk.phos","ast","trig","platelet","protime")
## Strata
strata <- "status"
strataTwoVars <- c("status","sex")
strataThreeVars <- c("sex","ascites","hepato")
## Data and variables
dataFrame <- pbc
nonNormalVars <- c("bili","chol","copper","alk.phos","trig","protime")
## Create edema strata that are of sizes 1, 2, and 3
smallDataFrame <- pbc[c(2, 3,4, 1,10,14),]
smallStrata <- "edema"
Actual tests
### Behaviors on correct data format (non-stratified)
## Creation
contTable1 <- CreateContTable(vars = vars, data = dataFrame)
## summary method
summary(contTable1)
strata: Overall
n miss mean sd median q25 q75 min max skew kurt
time 418 0 1917.8 1104.67 1730.0 1092.8 2613.5 41.0 4795.0 0.473 -0.48
age 418 0 50.7 10.45 51.0 42.8 58.2 26.3 78.4 0.087 -0.62
bili 418 0 3.2 4.41 1.4 0.8 3.4 0.3 28.0 2.718 8.07
chol 418 134 369.5 231.94 309.5 249.5 400.0 120.0 1775.0 3.409 14.34
albumin 418 0 3.5 0.42 3.5 3.2 3.8 2.0 4.6 -0.468 0.57
copper 418 108 97.6 85.61 73.0 41.2 123.0 4.0 588.0 2.304 7.62
alk.phos 418 106 1982.7 2140.39 1259.0 871.5 1980.0 289.0 13862.4 2.993 9.66
ast 418 106 122.6 56.70 114.7 80.6 151.9 26.4 457.2 1.449 4.31
trig 418 136 124.7 65.15 108.0 84.2 151.0 33.0 598.0 2.524 11.80
platelet 418 11 257.0 98.33 251.0 188.5 318.0 62.0 721.0 0.627 0.86
protime 418 2 10.7 1.02 10.6 10.0 11.1 9.0 18.0 2.223 10.04
## print method by default
print(contTable1)
"Overall"
"time (mean (sd))" "1917.78 (1104.67)"
"age (mean (sd))" "50.74 (10.45)"
"bili (mean (sd))" "3.22 (4.41)"
"chol (mean (sd))" "369.51 (231.94)"
"albumin (mean (sd))" "3.50 (0.42)"
"copper (mean (sd))" "97.65 (85.61)"
"alk.phos (mean (sd))" "1982.66 (2140.39)"
"ast (mean (sd))" "122.56 (56.70)"
"trig (mean (sd))" "124.70 (65.15)"
"platelet (mean (sd))" "257.02 (98.33)"
"protime (mean (sd))" "10.73 (1.02)"
## No quote
print(contTable1, quote = FALSE)
Overall
time (mean (sd)) 1917.78 (1104.67)
age (mean (sd)) 50.74 (10.45)
bili (mean (sd)) 3.22 (4.41)
chol (mean (sd)) 369.51 (231.94)
albumin (mean (sd)) 3.50 (0.42)
copper (mean (sd)) 97.65 (85.61)
alk.phos (mean (sd)) 1982.66 (2140.39)
ast (mean (sd)) 122.56 (56.70)
trig (mean (sd)) 124.70 (65.15)
platelet (mean (sd)) 257.02 (98.33)
protime (mean (sd)) 10.73 (1.02)
## No explanation
print(contTable1, quote = FALSE, explain = FALSE)
Overall
time 1917.78 (1104.67)
age 50.74 (10.45)
bili 3.22 (4.41)
chol 369.51 (231.94)
albumin 3.50 (0.42)
copper 97.65 (85.61)
alk.phos 1982.66 (2140.39)
ast 122.56 (56.70)
trig 124.70 (65.15)
platelet 257.02 (98.33)
protime 10.73 (1.02)
## All nonnormal
print(contTable1, nonnormal = TRUE)
"Overall"
"time (median [IQR])" "1730.00 [1092.75, 2613.50]"
"age (median [IQR])" "51.00 [42.83, 58.24]"
"bili (median [IQR])" "1.40 [0.80, 3.40]"
"chol (median [IQR])" "309.50 [249.50, 400.00]"
"albumin (median [IQR])" "3.53 [3.24, 3.77]"
"copper (median [IQR])" "73.00 [41.25, 123.00]"
"alk.phos (median [IQR])" "1259.00 [871.50, 1980.00]"
"ast (median [IQR])" "114.70 [80.60, 151.90]"
"trig (median [IQR])" "108.00 [84.25, 151.00]"
"platelet (median [IQR])" "251.00 [188.50, 318.00]"
"protime (median [IQR])" "10.60 [10.00, 11.10]"
## Partially nonnormal
print(contTable1, nonnormal = nonNormalVars, quote = TRUE)
"Overall"
"time (mean (sd))" "1917.78 (1104.67)"
"age (mean (sd))" "50.74 (10.45)"
"bili (median [IQR])" "1.40 [0.80, 3.40]"
"chol (median [IQR])" "309.50 [249.50, 400.00]"
"albumin (mean (sd))" "3.50 (0.42)"
"copper (median [IQR])" "73.00 [41.25, 123.00]"
"alk.phos (median [IQR])" "1259.00 [871.50, 1980.00]"
"ast (mean (sd))" "122.56 (56.70)"
"trig (median [IQR])" "108.00 [84.25, 151.00]"
"platelet (mean (sd))" "257.02 (98.33)"
"protime (median [IQR])" "10.60 [10.00, 11.10]"
### Behaviors on correct data format (stratified)
## Creation
contTable2 <- CreateContTable(vars = vars, strata = strata, data = dataFrame)
## summary method
summary(contTable2)
status: 0
n miss mean sd median q25 q75 min max skew kurt
time 232 0 2333.2 994.66 2186.5 1456.5 2979.5 691.0 4795.0 0.59 -0.59
age 232 0 49.5 10.43 49.8 41.4 56.8 26.3 78.4 0.10 -0.58
bili 232 0 1.6 1.91 0.9 0.6 1.6 0.3 13.6 3.49 14.50
chol 232 80 326.5 165.80 292.0 245.2 360.0 120.0 1480.0 4.30 24.79
albumin 232 0 3.6 0.36 3.6 3.4 3.8 2.4 4.6 -0.21 0.44
copper 232 65 66.6 57.05 52.0 33.5 77.5 4.0 412.0 3.07 13.52
alk.phos 232 64 1578.1 1633.07 1107.5 794.0 1641.0 289.0 11046.6 3.59 14.68
ast 232 64 107.3 52.79 94.5 71.3 129.0 26.4 457.2 2.38 11.22
trig 232 81 111.8 48.28 104.0 80.0 133.5 44.0 382.0 1.72 5.92
platelet 232 5 261.2 88.61 256.0 203.5 313.0 79.0 539.0 0.41 0.21
protime 232 1 10.5 0.92 10.4 9.9 10.8 9.0 18.0 4.21 29.69
---------------------------------------------------------------------------------------
status: 1
n miss mean sd median q25 q75 min max skew kurt
time 25 0 1546.2 753.07 1435.0 901.0 2241.0 533.0 3092.0 0.596 -0.69
age 25 0 41.7 6.33 41.0 36.5 47.2 33.0 56.0 0.470 -0.58
bili 25 0 3.6 3.60 3.1 1.3 3.5 0.5 18.0 2.951 10.89
chol 25 7 439.5 335.54 343.5 311.5 445.5 201.0 1712.0 3.553 13.79
albumin 25 0 3.5 0.46 3.5 3.2 3.8 2.3 4.2 -0.531 0.31
copper 25 6 124.0 100.08 102.0 69.0 129.5 32.0 444.0 2.250 5.62
alk.phos 25 6 1535.2 837.75 1345.0 1028.5 1777.5 637.0 3681.0 1.470 1.84
ast 25 6 130.1 36.95 127.0 113.9 151.1 54.2 205.0 0.088 0.31
trig 25 7 133.9 70.55 124.0 85.8 145.8 33.0 322.0 1.249 1.76
platelet 25 0 309.6 102.65 304.0 248.0 372.0 76.0 517.0 -0.112 0.20
protime 25 0 10.4 0.54 10.3 10.0 10.7 9.6 11.4 0.516 -0.73
---------------------------------------------------------------------------------------
status: 2
n miss mean sd median q25 q75 min max skew kurt
time 161 0 1376.9 1049.23 1083.0 597.0 2071.0 41.0 4191.0 0.833 -0.19
age 161 0 53.9 9.81 53.5 46.6 61.3 30.9 76.7 -0.013 -0.56
bili 161 0 5.5 5.84 3.2 1.4 7.1 0.3 28.0 1.684 2.36
chol 161 47 415.8 275.03 339.0 257.5 454.0 127.0 1775.0 2.575 8.11
albumin 161 0 3.4 0.47 3.4 3.1 3.6 2.0 4.5 -0.329 0.18
copper 161 37 135.4 98.50 111.0 63.5 199.2 13.0 588.0 1.840 5.50
alk.phos 161 36 2594.4 2677.11 1664.0 1029.0 2468.0 516.0 13862.4 2.300 5.08
ast 161 36 141.9 58.38 134.8 99.3 176.7 28.4 338.0 0.808 0.98
trig 161 48 140.5 79.26 122.0 91.0 171.0 49.0 598.0 2.505 10.29
platelet 161 6 242.5 107.88 224.0 158.0 312.5 62.0 721.0 1.012 1.80
protime 161 1 11.2 1.05 11.0 10.5 11.8 9.0 15.2 0.776 0.86
## print method by default
print(contTable2)
Stratified by status
"0" "1" "2"
"time (mean (sd))" "2333.16 (994.66)" "1546.20 (753.07)" "1376.93 (1049.23)"
"age (mean (sd))" "49.51 (10.43)" "41.69 (6.33)" "53.92 (9.81)"
"bili (mean (sd))" "1.58 (1.91)" "3.56 (3.60)" "5.54 (5.84)"
"chol (mean (sd))" "326.54 (165.80)" "439.50 (335.54)" "415.75 (275.03)"
"albumin (mean (sd))" "3.59 (0.36)" "3.49 (0.46)" "3.36 (0.47)"
"copper (mean (sd))" "66.61 (57.05)" "124.00 (100.08)" "135.41 (98.50)"
"alk.phos (mean (sd))" "1578.13 (1633.07)" "1535.21 (837.75)" "2594.35 (2677.11)"
"ast (mean (sd))" "107.29 (52.79)" "130.12 (36.95)" "141.93 (58.38)"
"trig (mean (sd))" "111.79 (48.28)" "133.94 (70.55)" "140.49 (79.26)"
"platelet (mean (sd))" "261.16 (88.61)" "309.60 (102.65)" "242.49 (107.88)"
"protime (mean (sd))" "10.45 (0.92)" "10.36 (0.54)" "11.19 (1.05)"
## No quote
print(contTable2, quote = FALSE)
Stratified by status
0 1 2
time (mean (sd)) 2333.16 (994.66) 1546.20 (753.07) 1376.93 (1049.23)
age (mean (sd)) 49.51 (10.43) 41.69 (6.33) 53.92 (9.81)
bili (mean (sd)) 1.58 (1.91) 3.56 (3.60) 5.54 (5.84)
chol (mean (sd)) 326.54 (165.80) 439.50 (335.54) 415.75 (275.03)
albumin (mean (sd)) 3.59 (0.36) 3.49 (0.46) 3.36 (0.47)
copper (mean (sd)) 66.61 (57.05) 124.00 (100.08) 135.41 (98.50)
alk.phos (mean (sd)) 1578.13 (1633.07) 1535.21 (837.75) 2594.35 (2677.11)
ast (mean (sd)) 107.29 (52.79) 130.12 (36.95) 141.93 (58.38)
trig (mean (sd)) 111.79 (48.28) 133.94 (70.55) 140.49 (79.26)
platelet (mean (sd)) 261.16 (88.61) 309.60 (102.65) 242.49 (107.88)
protime (mean (sd)) 10.45 (0.92) 10.36 (0.54) 11.19 (1.05)
## All nonnormal
print(contTable2, nonnormal = TRUE)
Stratified by status
"0" "1" "2"
"time (median [IQR])" "2186.50 [1456.50, 2979.50]" "1435.00 [901.00, 2241.00]" "1083.00 [597.00, 2071.00]"
"age (median [IQR])" "49.82 [41.38, 56.76]" "41.00 [36.49, 47.18]" "53.50 [46.63, 61.30]"
"bili (median [IQR])" "0.90 [0.60, 1.60]" "3.10 [1.30, 3.50]" "3.20 [1.40, 7.10]"
"chol (median [IQR])" "292.00 [245.25, 360.00]" "343.50 [311.50, 445.50]" "339.00 [257.50, 454.00]"
"albumin (median [IQR])" "3.60 [3.36, 3.82]" "3.53 [3.18, 3.77]" "3.40 [3.08, 3.65]"
"copper (median [IQR])" "52.00 [33.50, 77.50]" "102.00 [69.00, 129.50]" "111.00 [63.50, 199.25]"
"alk.phos (median [IQR])" "1107.50 [794.00, 1641.00]" "1345.00 [1028.50, 1777.50]" "1664.00 [1029.00, 2468.00]"
"ast (median [IQR])" "94.55 [71.30, 128.99]" "127.00 [113.93, 151.12]" "134.85 [99.33, 176.70]"
"trig (median [IQR])" "104.00 [80.00, 133.50]" "124.00 [85.75, 145.75]" "122.00 [91.00, 171.00]"
"platelet (median [IQR])" "256.00 [203.50, 313.00]" "304.00 [248.00, 372.00]" "224.00 [158.00, 312.50]"
"protime (median [IQR])" "10.40 [9.90, 10.80]" "10.30 [10.00, 10.70]" "11.00 [10.47, 11.80]"
## Partially nonnormal
print(contTable2, nonnormal = nonNormalVars, quote = TRUE)
Stratified by status
"0" "1" "2"
"time (mean (sd))" "2333.16 (994.66)" "1546.20 (753.07)" "1376.93 (1049.23)"
"age (mean (sd))" "49.51 (10.43)" "41.69 (6.33)" "53.92 (9.81)"
"bili (median [IQR])" "0.90 [0.60, 1.60]" "3.10 [1.30, 3.50]" "3.20 [1.40, 7.10]"
"chol (median [IQR])" "292.00 [245.25, 360.00]" "343.50 [311.50, 445.50]" "339.00 [257.50, 454.00]"
"albumin (mean (sd))" "3.59 (0.36)" "3.49 (0.46)" "3.36 (0.47)"
"copper (median [IQR])" "52.00 [33.50, 77.50]" "102.00 [69.00, 129.50]" "111.00 [63.50, 199.25]"
"alk.phos (median [IQR])" "1107.50 [794.00, 1641.00]" "1345.00 [1028.50, 1777.50]" "1664.00 [1029.00, 2468.00]"
"ast (mean (sd))" "107.29 (52.79)" "130.12 (36.95)" "141.93 (58.38)"
"trig (median [IQR])" "104.00 [80.00, 133.50]" "124.00 [85.75, 145.75]" "122.00 [91.00, 171.00]"
"platelet (mean (sd))" "261.16 (88.61)" "309.60 (102.65)" "242.49 (107.88)"
"protime (median [IQR])" "10.40 [9.90, 10.80]" "10.30 [10.00, 10.70]" "11.00 [10.47, 11.80]"
### Behaviors on correct data format (stratified with tests)
## Nonormality needs to be specified in the CreateContTable() if tests are employed
contTable3 <- CreateContTable(vars = vars, strata = strata, data = dataFrame,
nonnormal = nonNormalVars,
test = TRUE)
## The nonnormality specifications are automatically used
contTable3
Stratified by status
"0" "1" "2"
"time (mean (sd))" "2333.16 (994.66)" "1546.20 (753.07)" "1376.93 (1049.23)"
"age (mean (sd))" "49.51 (10.43)" "41.69 (6.33)" "53.92 (9.81)"
"bili (median [IQR])" "0.90 [0.60, 1.60]" "3.10 [1.30, 3.50]" "3.20 [1.40, 7.10]"
"chol (median [IQR])" "292.00 [245.25, 360.00]" "343.50 [311.50, 445.50]" "339.00 [257.50, 454.00]"
"albumin (mean (sd))" "3.59 (0.36)" "3.49 (0.46)" "3.36 (0.47)"
"copper (median [IQR])" "52.00 [33.50, 77.50]" "102.00 [69.00, 129.50]" "111.00 [63.50, 199.25]"
"alk.phos (median [IQR])" "1107.50 [794.00, 1641.00]" "1345.00 [1028.50, 1777.50]" "1664.00 [1029.00, 2468.00]"
"ast (mean (sd))" "107.29 (52.79)" "130.12 (36.95)" "141.93 (58.38)"
"trig (median [IQR])" "104.00 [80.00, 133.50]" "124.00 [85.75, 145.75]" "122.00 [91.00, 171.00]"
"platelet (mean (sd))" "261.16 (88.61)" "309.60 (102.65)" "242.49 (107.88)"
"protime (median [IQR])" "10.40 [9.90, 10.80]" "10.30 [10.00, 10.70]" "11.00 [10.47, 11.80]"
"p"
"time (mean (sd))" "0.000"
"age (mean (sd))" "0.000"
"bili (median [IQR])" "0.000"
"chol (median [IQR])" "0.004"
"albumin (mean (sd))" "0.000"
"copper (median [IQR])" "0.000"
"alk.phos (median [IQR])" "0.000"
"ast (mean (sd))" "0.000"
"trig (median [IQR])" "0.006"
"platelet (mean (sd))" "0.011"
"protime (median [IQR])" "0.000"
## No quote
print(contTable3, quote = FALSE)
Stratified by status
0 1 2 p
time (mean (sd)) 2333.16 (994.66) 1546.20 (753.07) 1376.93 (1049.23) 0.000
age (mean (sd)) 49.51 (10.43) 41.69 (6.33) 53.92 (9.81) 0.000
bili (median [IQR]) 0.90 [0.60, 1.60] 3.10 [1.30, 3.50] 3.20 [1.40, 7.10] 0.000
chol (median [IQR]) 292.00 [245.25, 360.00] 343.50 [311.50, 445.50] 339.00 [257.50, 454.00] 0.004
albumin (mean (sd)) 3.59 (0.36) 3.49 (0.46) 3.36 (0.47) 0.000
copper (median [IQR]) 52.00 [33.50, 77.50] 102.00 [69.00, 129.50] 111.00 [63.50, 199.25] 0.000
alk.phos (median [IQR]) 1107.50 [794.00, 1641.00] 1345.00 [1028.50, 1777.50] 1664.00 [1029.00, 2468.00] 0.000
ast (mean (sd)) 107.29 (52.79) 130.12 (36.95) 141.93 (58.38) 0.000
trig (median [IQR]) 104.00 [80.00, 133.50] 124.00 [85.75, 145.75] 122.00 [91.00, 171.00] 0.006
platelet (mean (sd)) 261.16 (88.61) 309.60 (102.65) 242.49 (107.88) 0.011
protime (median [IQR]) 10.40 [9.90, 10.80] 10.30 [10.00, 10.70] 11.00 [10.47, 11.80] 0.000
## Show the test results
print(contTable3, test = TRUE)
Stratified by status
"0" "1" "2"
"time (mean (sd))" "2333.16 (994.66)" "1546.20 (753.07)" "1376.93 (1049.23)"
"age (mean (sd))" "49.51 (10.43)" "41.69 (6.33)" "53.92 (9.81)"
"bili (median [IQR])" "0.90 [0.60, 1.60]" "3.10 [1.30, 3.50]" "3.20 [1.40, 7.10]"
"chol (median [IQR])" "292.00 [245.25, 360.00]" "343.50 [311.50, 445.50]" "339.00 [257.50, 454.00]"
"albumin (mean (sd))" "3.59 (0.36)" "3.49 (0.46)" "3.36 (0.47)"
"copper (median [IQR])" "52.00 [33.50, 77.50]" "102.00 [69.00, 129.50]" "111.00 [63.50, 199.25]"
"alk.phos (median [IQR])" "1107.50 [794.00, 1641.00]" "1345.00 [1028.50, 1777.50]" "1664.00 [1029.00, 2468.00]"
"ast (mean (sd))" "107.29 (52.79)" "130.12 (36.95)" "141.93 (58.38)"
"trig (median [IQR])" "104.00 [80.00, 133.50]" "124.00 [85.75, 145.75]" "122.00 [91.00, 171.00]"
"platelet (mean (sd))" "261.16 (88.61)" "309.60 (102.65)" "242.49 (107.88)"
"protime (median [IQR])" "10.40 [9.90, 10.80]" "10.30 [10.00, 10.70]" "11.00 [10.47, 11.80]"
"p"
"time (mean (sd))" "0.000"
"age (mean (sd))" "0.000"
"bili (median [IQR])" "0.000"
"chol (median [IQR])" "0.004"
"albumin (mean (sd))" "0.000"
"copper (median [IQR])" "0.000"
"alk.phos (median [IQR])" "0.000"
"ast (mean (sd))" "0.000"
"trig (median [IQR])" "0.006"
"platelet (mean (sd))" "0.011"
"protime (median [IQR])" "0.000"
## Nonnormality cannot be overriden when tests are requested.
print(contTable3, test = TRUE, nonnormal = nonNormalVars[1])
Warning: The nonnormality specifications from the object are used when tests are requested.
Stratified by status
"0" "1" "2"
"time (mean (sd))" "2333.16 (994.66)" "1546.20 (753.07)" "1376.93 (1049.23)"
"age (mean (sd))" "49.51 (10.43)" "41.69 (6.33)" "53.92 (9.81)"
"bili (median [IQR])" "0.90 [0.60, 1.60]" "3.10 [1.30, 3.50]" "3.20 [1.40, 7.10]"
"chol (median [IQR])" "292.00 [245.25, 360.00]" "343.50 [311.50, 445.50]" "339.00 [257.50, 454.00]"
"albumin (mean (sd))" "3.59 (0.36)" "3.49 (0.46)" "3.36 (0.47)"
"copper (median [IQR])" "52.00 [33.50, 77.50]" "102.00 [69.00, 129.50]" "111.00 [63.50, 199.25]"
"alk.phos (median [IQR])" "1107.50 [794.00, 1641.00]" "1345.00 [1028.50, 1777.50]" "1664.00 [1029.00, 2468.00]"
"ast (mean (sd))" "107.29 (52.79)" "130.12 (36.95)" "141.93 (58.38)"
"trig (median [IQR])" "104.00 [80.00, 133.50]" "124.00 [85.75, 145.75]" "122.00 [91.00, 171.00]"
"platelet (mean (sd))" "261.16 (88.61)" "309.60 (102.65)" "242.49 (107.88)"
"protime (median [IQR])" "10.40 [9.90, 10.80]" "10.30 [10.00, 10.70]" "11.00 [10.47, 11.80]"
"p"
"time (mean (sd))" "0.000"
"age (mean (sd))" "0.000"
"bili (median [IQR])" "0.000"
"chol (median [IQR])" "0.004"
"albumin (mean (sd))" "0.000"
"copper (median [IQR])" "0.000"
"alk.phos (median [IQR])" "0.000"
"ast (mean (sd))" "0.000"
"trig (median [IQR])" "0.006"
"platelet (mean (sd))" "0.011"
"protime (median [IQR])" "0.000"
## Check attributes
attr(contTable3, "nonnormal")
[1] 1 1 2 2 1 2 2 1 2 1 2
attr(contTable3, "pValues")
[1] 2.923e-13 2.126e-11 4.088e-26 3.588e-03 8.845e-06 2.935e-14 1.139e-05 1.090e-05 5.535e-03 1.085e-02 1.987e-15
### Multivariable stratification
## Two variables
contTable4 <- CreateContTable(vars = vars, strata = strataTwoVars, data = dataFrame)
summary(contTable4)
status: 0
sex: m
n miss mean sd median q25 q75 min max skew kurt
time 17 0 2462.2 1217.33 1899.0 1419.0 3445.0 1129.0 4459.0 0.581 -1.28
age 17 0 55.7 10.65 52.9 49.1 61.0 41.0 78.4 0.818 -0.03
bili 17 0 2.6 2.62 1.7 0.9 3.0 0.6 8.6 1.345 0.41
chol 17 6 367.9 234.99 252.0 242.5 403.0 216.0 1000.0 2.304 5.61
albumin 17 0 3.5 0.43 3.6 3.1 3.7 2.4 4.1 -0.937 1.18
copper 17 6 128.8 113.07 84.0 57.0 168.0 25.0 380.0 1.380 1.25
alk.phos 17 6 2482.3 3052.94 1098.0 913.0 2311.0 601.0 10396.8 2.175 4.50
ast 17 6 112.3 50.94 108.5 62.8 142.6 56.8 193.0 0.446 -1.14
trig 17 6 131.8 33.73 128.0 112.5 153.5 83.0 188.0 0.274 -0.75
platelet 17 1 213.4 72.17 212.5 170.5 267.0 92.0 336.0 -0.066 -0.72
protime 17 0 10.9 0.80 10.9 10.6 11.2 9.8 13.0 1.077 1.92
---------------------------------------------------------------------------------------
status: 1
sex: m
n miss mean sd median q25 q75 min max skew kurt
time 3 0 1147.7 785.78 877.0 705.0 1455.0 533.0 2033.0 1.37 NaN
age 3 0 42.2 11.97 35.4 35.3 45.7 35.2 56.0 1.73 NaN
bili 3 0 2.4 1.15 2.4 1.8 3.0 1.2 3.5 -0.13 NaN
chol 3 0 415.3 201.32 325.0 300.0 485.5 275.0 646.0 1.61 NaN
albumin 3 0 3.7 0.28 3.8 3.6 3.9 3.4 4.0 -1.21 NaN
copper 3 0 215.3 198.03 102.0 101.0 273.0 100.0 444.0 1.73 NaN
alk.phos 3 0 921.0 196.50 855.0 810.5 998.5 766.0 1142.0 1.34 NaN
ast 3 0 110.7 30.99 127.0 101.0 128.6 75.0 130.2 -1.71 NaN
trig 3 0 165.0 64.58 194.0 142.5 202.0 91.0 210.0 -1.61 NaN
platelet 3 0 289.0 65.18 306.0 261.5 325.0 217.0 344.0 -1.09 NaN
protime 3 0 10.7 0.51 10.6 10.4 10.9 10.3 11.3 1.09 NaN
---------------------------------------------------------------------------------------
status: 2
sex: m
n miss mean sd median q25 q75 min max skew kurt
time 24 0 1584.9 1120.5 1257.0 867.2 1906.0 140.0 4191.0 1.112 0.55
age 24 0 57.4 10.3 57.6 51.1 67.5 33.5 71.9 -0.403 -0.57
bili 24 0 3.1 2.2 2.3 1.6 3.6 0.8 9.5 1.586 1.97
chol 24 3 352.0 149.2 331.0 247.0 426.0 151.0 660.0 0.516 -0.44
albumin 24 0 3.6 0.5 3.7 3.3 3.9 2.3 4.3 -0.947 0.81
copper 24 2 158.7 78.6 165.0 96.8 215.2 13.0 290.0 -0.113 -0.99
alk.phos 24 2 2189.0 2243.2 1452.0 973.8 2387.0 516.0 10165.0 2.551 7.32
ast 24 2 128.4 47.4 124.8 88.5 170.5 46.5 221.9 0.313 -0.74
trig 24 3 129.8 59.0 122.0 91.0 155.0 49.0 242.0 0.587 -0.69
platelet 24 0 235.7 93.9 225.5 154.8 328.0 70.0 394.0 0.012 -1.17
protime 24 0 11.0 1.1 10.9 10.2 11.3 9.7 14.1 1.391 2.25
---------------------------------------------------------------------------------------
status: 0
sex: f
n miss mean sd median q25 q75 min max skew kurt
time 215 0 2323.0 977.61 2195.0 1469.0 2917.5 691.0 4795.0 0.582 -0.53
age 215 0 49.0 10.28 49.0 40.9 56.6 26.3 75.0 0.034 -0.78
bili 215 0 1.5 1.83 0.9 0.6 1.4 0.3 13.6 3.915 18.58
chol 215 74 323.3 159.87 294.0 246.0 360.0 120.0 1480.0 4.679 29.79
albumin 215 0 3.6 0.35 3.6 3.4 3.8 2.5 4.6 -0.100 0.23
copper 215 59 62.2 48.66 51.5 33.0 75.2 4.0 412.0 3.148 17.31
alk.phos 215 58 1514.8 1481.83 1110.0 794.0 1637.0 289.0 11046.6 3.748 16.82
ast 215 58 106.9 53.06 93.0 72.8 128.7 26.4 457.2 2.496 11.92
trig 215 75 110.2 48.98 101.0 76.8 133.0 44.0 382.0 1.821 6.26
platelet 215 4 264.8 88.83 256.0 209.0 317.5 79.0 539.0 0.402 0.19
protime 215 1 10.4 0.92 10.3 9.9 10.7 9.0 18.0 4.532 32.79
---------------------------------------------------------------------------------------
status: 1
sex: f
n miss mean sd median q25 q75 min max skew kurt
time 22 0 1600.5 750.70 1441.0 1033.2 2260.5 617.0 3092.0 0.6083 -0.732
age 22 0 41.6 5.67 41.1 37.3 47.0 33.0 52.0 0.1106 -1.025
bili 22 0 3.7 3.80 3.2 1.4 4.2 0.5 18.0 2.7703 9.541
chol 22 7 444.3 361.62 348.0 313.0 441.0 201.0 1712.0 3.4838 12.875
albumin 22 0 3.5 0.47 3.5 3.1 3.8 2.3 4.2 -0.3997 0.202
copper 22 6 106.9 69.34 98.0 58.5 126.2 32.0 308.0 1.6840 3.927
alk.phos 22 6 1650.4 864.55 1407.0 1131.8 1932.0 637.0 3681.0 1.2790 1.262
ast 22 6 133.8 37.69 124.0 114.3 153.5 54.2 205.0 0.0088 0.355
trig 22 7 127.7 72.11 118.0 81.0 142.0 33.0 322.0 1.6287 3.156
platelet 22 0 312.4 107.56 301.0 252.0 384.0 76.0 517.0 -0.1674 0.053
protime 22 0 10.3 0.53 10.1 10.0 10.6 9.6 11.4 0.6395 -0.557
---------------------------------------------------------------------------------------
status: 2
sex: f
n miss mean sd median q25 q75 min max skew kurt
time 137 0 1340.5 1036.28 1037.0 549.0 2071.0 41.0 3853.0 0.783 -0.37
age 137 0 53.3 9.63 53.0 46.4 60.7 30.9 76.7 0.032 -0.46
bili 137 0 6.0 6.16 3.4 1.4 7.3 0.3 28.0 1.501 1.61
chol 137 44 430.1 294.85 344.0 260.0 468.0 127.0 1775.0 2.454 6.88
albumin 137 0 3.3 0.46 3.4 3.1 3.6 2.0 4.5 -0.271 0.35
copper 137 35 130.4 101.92 102.5 58.0 172.8 14.0 588.0 2.102 6.35
alk.phos 137 34 2680.9 2762.92 1787.0 1057.0 2562.0 559.0 13862.4 2.258 4.81
ast 137 34 144.8 60.27 136.7 102.9 177.5 28.4 338.0 0.809 0.93
trig 137 45 142.9 83.28 121.0 91.8 171.2 50.0 598.0 2.581 10.13
platelet 137 6 243.7 110.52 224.0 160.0 304.0 62.0 721.0 1.106 1.97
protime 137 1 11.2 1.04 11.1 10.6 11.8 9.0 15.2 0.695 0.84
print(contTable4)
Stratified by status:sex
"0:m" "1:m" "2:m" "0:f"
"time (mean (sd))" "2462.18 (1217.33)" "1147.67 (785.78)" "1584.88 (1120.46)" "2322.95 (977.61)"
"age (mean (sd))" "55.69 (10.65)" "42.16 (11.97)" "57.42 (10.34)" "49.02 (10.28)"
"bili (mean (sd))" "2.63 (2.62)" "2.37 (1.15)" "3.10 (2.25)" "1.49 (1.83)"
"chol (mean (sd))" "367.91 (234.99)" "415.33 (201.32)" "352.05 (149.18)" "323.31 (159.87)"
"albumin (mean (sd))" "3.47 (0.43)" "3.75 (0.28)" "3.55 (0.50)" "3.60 (0.35)"
"copper (mean (sd))" "128.82 (113.07)" "215.33 (198.03)" "158.68 (78.57)" "62.22 (48.66)"
"alk.phos (mean (sd))" "2482.25 (3052.94)" "921.00 (196.50)" "2189.02 (2243.18)" "1514.78 (1481.83)"
"ast (mean (sd))" "112.28 (50.94)" "110.73 (30.99)" "128.38 (47.39)" "106.94 (53.06)"
"trig (mean (sd))" "131.82 (33.73)" "165.00 (64.58)" "129.76 (58.95)" "110.21 (48.98)"
"platelet (mean (sd))" "213.44 (72.17)" "289.00 (65.18)" "235.71 (93.92)" "264.78 (88.83)"
"protime (mean (sd))" "10.94 (0.80)" "10.73 (0.51)" "10.97 (1.07)" "10.42 (0.92)"
"1:f" "2:f"
"time (mean (sd))" "1600.55 (750.70)" "1340.50 (1036.28)"
"age (mean (sd))" "41.63 (5.67)" "53.31 (9.63)"
"bili (mean (sd))" "3.72 (3.80)" "5.97 (6.16)"
"chol (mean (sd))" "444.33 (361.62)" "430.14 (294.85)"
"albumin (mean (sd))" "3.45 (0.47)" "3.33 (0.46)"
"copper (mean (sd))" "106.88 (69.34)" "130.39 (101.92)"
"alk.phos (mean (sd))" "1650.38 (864.55)" "2680.93 (2762.92)"
"ast (mean (sd))" "133.75 (37.69)" "144.82 (60.27)"
"trig (mean (sd))" "127.73 (72.11)" "142.93 (83.28)"
"platelet (mean (sd))" "312.41 (107.56)" "243.73 (110.52)"
"protime (mean (sd))" "10.31 (0.53)" "11.23 (1.04)"
## Three variables
contTable5 <- CreateContTable(vars = vars, strata = strataThreeVars, data = dataFrame)
summary(contTable5)
sex: m
ascites: 0
hepato: 0
n miss mean sd median q25 q75 min max skew kurt
time 15 0 2412.3 1422.19 2386.0 1186.0 3607.5 140.0 4459.0 0.12 -1.29
age 15 0 51.1 12.11 49.1 44.2 60.8 33.5 70.1 0.19 -1.02
bili 15 0 2.2 1.31 1.9 1.6 2.5 0.6 6.0 1.71 4.35
chol 15 0 360.3 164.98 317.0 250.5 438.0 168.0 660.0 0.87 -0.46
albumin 15 0 3.7 0.44 3.8 3.5 4.0 2.6 4.3 -1.27 2.40
copper 15 0 166.3 107.94 158.0 98.0 213.5 13.0 444.0 1.02 2.05
alk.phos 15 0 2839.4 3424.63 1056.0 740.0 3470.7 516.0 10396.8 1.61 1.36
ast 15 0 125.0 43.62 127.0 102.3 141.1 56.8 206.4 0.26 -0.32
trig 15 0 132.2 55.55 118.0 85.5 183.0 55.0 219.0 0.19 -1.42
platelet 15 1 246.6 88.70 213.5 180.8 329.2 108.0 394.0 0.25 -1.17
protime 15 0 11.1 1.19 10.6 10.2 11.3 9.7 14.1 1.47 1.96
---------------------------------------------------------------------------------------
sex: f
ascites: 0
hepato: 0
n miss mean sd median q25 q75 min max skew kurt
time 132 0 2375.2 1020.62 2361.0 1475.0 3089.0 198.0 4556.0 0.168 -0.73
age 132 0 48.4 10.22 48.0 40.7 56.1 28.9 75.0 0.271 -0.55
bili 132 0 1.6 2.40 0.9 0.6 1.4 0.3 22.5 5.827 45.14
chol 132 15 337.0 158.86 296.0 242.0 390.0 120.0 1276.0 2.853 12.23
albumin 132 0 3.7 0.34 3.7 3.4 3.9 2.8 4.6 0.075 0.20
copper 132 1 65.6 56.66 52.0 32.0 78.5 4.0 464.0 3.395 18.96
alk.phos 132 0 1634.5 1732.65 1177.5 793.2 1689.8 369.0 12258.8 3.998 18.79
ast 132 0 111.4 52.10 99.1 73.4 136.2 28.4 328.6 1.278 2.10
trig 132 15 110.7 52.29 100.0 74.0 135.0 44.0 382.0 1.875 5.96
platelet 132 0 287.4 87.74 278.0 226.5 336.5 71.0 514.0 0.267 -0.17
protime 132 0 10.4 0.89 10.3 9.9 10.7 9.0 17.1 3.791 24.98
---------------------------------------------------------------------------------------
sex: m
ascites: 1
hepato: 0
NULL
---------------------------------------------------------------------------------------
sex: f
ascites: 1
hepato: 0
n miss mean sd median q25 q75 min max skew kurt
time 5 0 1130.2 1382.64 388.0 51.0 2081.0 41.0 3090.0 0.86 -1.63
age 5 0 64.6 10.52 65.9 60.7 70.6 49.0 76.7 -0.66 0.39
bili 5 0 7.1 7.65 2.5 1.4 12.6 1.3 17.9 0.86 -1.80
chol 5 0 253.0 86.81 206.0 200.0 302.0 175.0 382.0 0.98 -0.68
albumin 5 0 2.9 0.54 2.8 2.7 3.1 2.1 3.5 -0.20 0.49
copper 5 0 112.4 72.72 108.0 58.0 140.0 36.0 220.0 0.71 -0.07
alk.phos 5 0 1257.6 416.42 1516.0 918.0 1523.0 705.0 1626.0 -0.70 -2.41
ast 5 0 170.8 118.75 147.2 86.8 238.7 43.4 338.0 0.57 -0.98
trig 5 1 138.5 67.34 127.5 101.5 164.5 70.0 229.0 0.88 1.02
platelet 5 0 192.8 116.54 145.0 126.0 302.0 62.0 329.0 0.31 -2.55
protime 5 0 12.0 1.16 12.2 11.5 12.9 10.3 13.2 -0.76 -0.29
---------------------------------------------------------------------------------------
sex: m
ascites: 0
hepato: 1
n miss mean sd median q25 q75 min max skew kurt
time 18 0 1702.8 1198.55 1299.5 821.8 2088.5 533.0 4191.0 1.14 0.053
age 18 0 58.6 9.18 58.3 51.3 66.6 44.5 74.5 0.22 -1.195
bili 18 0 3.4 2.61 2.3 1.2 5.2 0.6 8.6 0.78 -0.760
chol 18 0 382.6 194.31 361.0 251.2 426.8 178.0 1000.0 1.98 5.357
albumin 18 0 3.6 0.34 3.7 3.4 3.9 3.0 4.0 -0.61 -0.901
copper 18 0 142.4 82.94 114.5 81.8 197.0 25.0 290.0 0.48 -1.049
alk.phos 18 0 1822.9 1260.72 1222.5 1028.8 2387.0 681.0 5719.0 1.92 4.468
ast 18 0 124.5 49.03 118.6 84.3 168.9 57.4 221.9 0.48 -0.872
trig 18 0 138.0 49.34 127.0 95.0 153.8 83.0 242.0 1.00 0.086
platelet 18 0 240.9 86.30 250.0 189.5 298.8 70.0 360.0 -0.47 -0.738
protime 18 0 10.8 0.63 10.9 10.4 11.3 9.8 12.0 -0.25 -0.676
---------------------------------------------------------------------------------------
sex: f
ascites: 0
hepato: 1
n miss mean sd median q25 q75 min max skew kurt
time 123 0 1838.3 1007.36 1741.0 1083.5 2391.0 71.0 4523.0 0.71 0.24
age 123 0 48.7 9.71 49.3 41.4 55.6 26.3 69.3 -0.06 -0.69
bili 123 0 4.0 4.84 2.1 1.0 5.0 0.4 28.0 2.64 8.22
chol 123 10 411.1 298.67 322.0 260.0 408.0 149.0 1775.0 3.09 9.84
albumin 123 0 3.4 0.39 3.5 3.2 3.6 2.0 4.2 -0.62 1.57
copper 123 0 104.1 85.01 76.0 50.0 125.5 11.0 588.0 2.47 9.18
alk.phos 123 0 2259.9 2445.16 1428.0 958.0 2280.0 289.0 13862.4 2.68 7.38
ast 123 0 130.5 60.16 120.9 90.5 158.9 26.4 457.2 1.76 6.54
trig 123 11 127.5 60.14 108.5 89.5 149.8 33.0 322.0 1.40 2.04
platelet 123 3 253.1 97.99 239.0 184.5 306.0 79.0 563.0 0.71 0.72
protime 123 0 10.8 0.96 10.6 10.0 11.5 9.2 13.3 0.65 -0.34
---------------------------------------------------------------------------------------
sex: m
ascites: 1
hepato: 1
n miss mean sd median q25 q75 min max skew kurt
time 3 0 1057.7 799.01 1217.0 704.0 1491.0 191.0 1765.0 -0.862 NaN
age 3 0 67.5 11.11 67.9 62.1 73.2 56.2 78.4 -0.155 NaN
bili 3 0 3.1 3.50 1.3 1.1 4.2 0.8 7.1 1.692 NaN
chol 3 1 197.0 65.05 197.0 174.0 220.0 151.0 243.0 NaN NaN
albumin 3 0 2.8 0.45 3.0 2.6 3.1 2.3 3.1 -1.708 NaN
copper 3 0 165.3 186.51 73.0 58.0 226.5 43.0 380.0 1.682 NaN
alk.phos 3 0 941.0 195.41 983.0 855.5 1047.5 728.0 1112.0 -0.922 NaN
ast 3 0 91.9 58.65 71.0 58.8 114.5 46.5 158.1 1.398 NaN
trig 3 1 101.5 74.25 101.5 75.2 127.8 49.0 154.0 NaN NaN
platelet 3 0 155.3 58.00 156.0 126.5 184.5 97.0 213.0 -0.052 NaN
protime 3 0 11.8 1.22 11.2 11.1 12.2 11.0 13.2 1.680 NaN
---------------------------------------------------------------------------------------
sex: f
ascites: 1
hepato: 1
n miss mean sd median q25 q75 min max skew kurt
time 16 0 668 805.64 341 206.8 915.8 77.0 3222.0 2.390 6.58
age 16 0 55 8.91 55 48.3 61.4 39.2 70.9 0.048 -0.53
bili 16 0 11 7.80 11 4.0 17.2 1.2 24.5 0.178 -1.43
chol 16 2 364 247.72 278 222.0 382.2 175.0 1092.0 2.299 5.70
albumin 16 0 3 0.45 3 2.6 3.3 2.3 3.9 0.261 -0.61
copper 16 1 184 125.71 182 130.5 215.0 16.0 558.0 1.797 5.47
alk.phos 16 0 2522 2043.39 1776 1070.2 3708.1 559.0 6931.2 1.158 0.10
ast 16 0 140 43.22 136 105.5 176.5 73.5 227.0 0.288 -0.65
trig 16 2 194 145.19 162 118.0 188.0 68.0 598.0 2.184 4.55
platelet 16 0 197 94.71 178 138.5 224.0 80.0 401.0 1.194 0.97
protime 16 0 12 1.09 12 11.1 12.0 10.6 15.2 2.201 6.15
print(contTable5)
Stratified by sex:ascites:hepato
"m:0:0" "f:0:0" "m:1:0" "f:1:0" "m:0:1"
"time (mean (sd))" "2412.33 (1422.19)" "2375.19 (1020.62)" "empty" "1130.20 (1382.64)" "1702.78 (1198.55)"
"age (mean (sd))" "51.07 (12.11)" "48.41 (10.22)" "empty" "64.57 (10.52)" "58.60 (9.18)"
"bili (mean (sd))" "2.24 (1.31)" "1.61 (2.40)" "empty" "7.14 (7.65)" "3.37 (2.61)"
"chol (mean (sd))" "360.33 (164.98)" "336.99 (158.86)" "empty" "253.00 (86.81)" "382.61 (194.31)"
"albumin (mean (sd))" "3.72 (0.44)" "3.67 (0.34)" "empty" "2.85 (0.54)" "3.59 (0.34)"
"copper (mean (sd))" "166.27 (107.94)" "65.56 (56.66)" "empty" "112.40 (72.72)" "142.44 (82.94)"
"alk.phos (mean (sd))" "2839.41 (3424.63)" "1634.45 (1732.65)" "empty" "1257.60 (416.42)" "1822.89 (1260.72)"
"ast (mean (sd))" "125.02 (43.62)" "111.35 (52.10)" "empty" "170.83 (118.75)" "124.49 (49.03)"
"trig (mean (sd))" "132.20 (55.55)" "110.70 (52.29)" "empty" "138.50 (67.34)" "138.00 (49.34)"
"platelet (mean (sd))" "246.57 (88.70)" "287.36 (87.74)" "empty" "192.80 (116.54)" "240.94 (86.30)"
"protime (mean (sd))" "11.07 (1.19)" "10.42 (0.89)" "empty" "12.02 (1.16)" "10.82 (0.63)"
"f:0:1" "m:1:1" "f:1:1"
"time (mean (sd))" "1838.28 (1007.36)" "1057.67 (799.01)" "668.25 (805.64)"
"age (mean (sd))" "48.71 (9.71)" "67.52 (11.11)" "54.92 (8.91)"
"bili (mean (sd))" "3.97 (4.84)" "3.07 (3.50)" "10.97 (7.80)"
"chol (mean (sd))" "411.14 (298.67)" "197.00 (65.05)" "364.50 (247.72)"
"albumin (mean (sd))" "3.43 (0.39)" "2.79 (0.45)" "3.02 (0.45)"
"copper (mean (sd))" "104.11 (85.01)" "165.33 (186.51)" "184.13 (125.71)"
"alk.phos (mean (sd))" "2259.90 (2445.16)" "941.00 (195.41)" "2522.41 (2043.39)"
"ast (mean (sd))" "130.47 (60.16)" "91.87 (58.65)" "140.36 (43.22)"
"trig (mean (sd))" "127.48 (60.14)" "101.50 (74.25)" "193.71 (145.19)"
"platelet (mean (sd))" "253.06 (97.99)" "155.33 (58.00)" "197.38 (94.71)"
"protime (mean (sd))" "10.79 (0.96)" "11.80 (1.22)" "11.79 (1.09)"
### Behaviors on wrong data format
## Not a data frame
contTable9 <- CreateContTable(vars = vars, strata = strata, data = "dataFrame")
Error: The data argument needs to be a data frame (no quote).
## Invalid variables
contTable9 <- CreateContTable(vars = c(vars,"wrong_var1","wrong_var2"), strata = strata, data = dataFrame)
Warning: The data frame does not have wrong_var1 wrong_var2 . Dropping them.
contTable9
Stratified by status
"0" "1" "2"
"time (mean (sd))" "2333.16 (994.66)" "1546.20 (753.07)" "1376.93 (1049.23)"
"age (mean (sd))" "49.51 (10.43)" "41.69 (6.33)" "53.92 (9.81)"
"bili (mean (sd))" "1.58 (1.91)" "3.56 (3.60)" "5.54 (5.84)"
"chol (mean (sd))" "326.54 (165.80)" "439.50 (335.54)" "415.75 (275.03)"
"albumin (mean (sd))" "3.59 (0.36)" "3.49 (0.46)" "3.36 (0.47)"
"copper (mean (sd))" "66.61 (57.05)" "124.00 (100.08)" "135.41 (98.50)"
"alk.phos (mean (sd))" "1578.13 (1633.07)" "1535.21 (837.75)" "2594.35 (2677.11)"
"ast (mean (sd))" "107.29 (52.79)" "130.12 (36.95)" "141.93 (58.38)"
"trig (mean (sd))" "111.79 (48.28)" "133.94 (70.55)" "140.49 (79.26)"
"platelet (mean (sd))" "261.16 (88.61)" "309.60 (102.65)" "242.49 (107.88)"
"protime (mean (sd))" "10.45 (0.92)" "10.36 (0.54)" "11.19 (1.05)"
## Invalid variables only
contTable9 <- CreateContTable(vars = c("wrong_var1","wrong_var2"), strata = strata, data = dataFrame)
Warning: The data frame does not have wrong_var1 wrong_var2 . Dropping them.
Error: No valid variables.
## Duplication
contTable9 <- CreateContTable(vars = c(vars,"time","age"), strata = strata, data = dataFrame)
## No stratifying variables
contTable9 <- CreateContTable(vars = vars, strata = "status3", data = dataFrame)
Error: None of the stratifying variables are present in the data frame
## Only mean in the object
contTable9 <- CreateContTable(vars = vars, strata = strata, data = dataFrame, func.names = "mean")
contTable9
status: 0
mean
time 2333.2
age 49.5
bili 1.6
chol 326.5
albumin 3.6
copper 66.6
alk.phos 1578.1
ast 107.3
trig 111.8
platelet 261.2
protime 10.5
---------------------------------------------------------------------------------------
status: 1
mean
time 1546.2
age 41.7
bili 3.6
chol 439.5
albumin 3.5
copper 124.0
alk.phos 1535.2
ast 130.1
trig 133.9
platelet 309.6
protime 10.4
---------------------------------------------------------------------------------------
status: 2
mean
time 1376.9
age 53.9
bili 5.5
chol 415.8
albumin 3.4
copper 135.4
alk.phos 2594.4
ast 141.9
trig 140.5
platelet 242.5
protime 11.2
Error: The object does not contain all necessary statistics. Use summary() method.
## Very small strata
contTable9 <- CreateContTable(vars = vars, strata = smallStrata, data = smallDataFrame)
summary(contTable9)
edema: 0
n miss mean sd median q25 q75 min max skew kurt
time 1 0 4500.0 NA 4500.0 4500.0 4500.0 4500.0 4500.0 NaN NaN
age 1 0 56.4 NA 56.4 56.4 56.4 56.4 56.4 NaN NaN
bili 1 0 1.1 NA 1.1 1.1 1.1 1.1 1.1 NaN NaN
chol 1 0 302.0 NA 302.0 302.0 302.0 302.0 302.0 NaN NaN
albumin 1 0 4.1 NA 4.1 4.1 4.1 4.1 4.1 NaN NaN
copper 1 0 54.0 NA 54.0 54.0 54.0 54.0 54.0 NaN NaN
alk.phos 1 0 7394.8 NA 7394.8 7394.8 7394.8 7394.8 7394.8 NaN NaN
ast 1 0 113.5 NA 113.5 113.5 113.5 113.5 113.5 NaN NaN
trig 1 0 88.0 NA 88.0 88.0 88.0 88.0 88.0 NaN NaN
platelet 1 0 221.0 NA 221.0 221.0 221.0 221.0 221.0 NaN NaN
protime 1 0 10.6 NA 10.6 10.6 10.6 10.6 10.6 NaN NaN
---------------------------------------------------------------------------------------
edema: 0.5
n miss mean sd median q25 q75 min max skew kurt
time 2 0 1468.5 645.59 1468.5 1240.2 1696.8 1012.0 1925.0 NaN NaN
age 2 0 62.4 10.84 62.4 58.6 66.2 54.7 70.1 NaN NaN
bili 2 0 1.6 0.28 1.6 1.5 1.7 1.4 1.8 NaN NaN
chol 2 0 210.0 48.08 210.0 193.0 227.0 176.0 244.0 NaN NaN
albumin 2 0 3.0 0.66 3.0 2.8 3.2 2.5 3.5 NaN NaN
copper 2 0 137.0 103.24 137.0 100.5 173.5 64.0 210.0 NaN NaN
alk.phos 2 0 3318.9 3963.90 3318.9 1917.5 4720.4 516.0 6121.8 NaN NaN
ast 2 0 78.4 25.08 78.4 69.5 87.2 60.6 96.1 NaN NaN
trig 2 0 73.5 26.16 73.5 64.2 82.8 55.0 92.0 NaN NaN
platelet 2 0 167.0 22.63 167.0 159.0 175.0 151.0 183.0 NaN NaN
protime 2 0 11.2 1.20 11.2 10.7 11.6 10.3 12.0 NaN NaN
---------------------------------------------------------------------------------------
edema: 1
n miss mean sd median q25 q75 min max skew kurt
time 3 0 556.0 598.45 400.0 225.5 808.5 51.0 1217.0 1.09 NaN
age 3 0 61.8 7.65 58.8 57.5 64.7 56.2 70.6 1.52 NaN
bili 3 0 9.3 7.42 12.6 6.7 13.6 0.8 14.5 -1.61 NaN
chol 3 1 230.5 43.13 230.5 215.2 245.8 200.0 261.0 NaN NaN
albumin 3 0 2.5 0.24 2.6 2.4 2.7 2.3 2.7 -1.10 NaN
copper 3 0 113.0 61.15 140.0 91.5 148.0 43.0 156.0 -1.60 NaN
alk.phos 3 0 1121.3 525.39 918.0 823.0 1318.0 728.0 1718.0 1.48 NaN
ast 3 0 118.7 41.60 137.9 104.5 142.6 71.0 147.2 -1.64 NaN
trig 3 1 157.5 20.51 157.5 150.2 164.8 143.0 172.0 NaN NaN
platelet 3 0 216.0 76.39 190.0 173.0 246.0 156.0 302.0 1.35 NaN
protime 3 0 11.6 0.60 11.5 11.2 11.8 11.0 12.2 0.49 NaN
contTable9
Stratified by edema
"0" "0.5" "1"
"time (mean (sd))" "4500.00 (NA)" "1468.50 (645.59)" "556.00 (598.45)"
"age (mean (sd))" "56.45 (NA)" "62.41 (10.84)" "61.85 (7.65)"
"bili (mean (sd))" "1.10 (NA)" "1.60 (0.28)" "9.30 (7.42)"
"chol (mean (sd))" "302.00 (NA)" "210.00 (48.08)" "230.50 (43.13)"
"albumin (mean (sd))" "4.14 (NA)" "3.01 (0.66)" "2.54 (0.24)"
"copper (mean (sd))" "54.00 (NA)" "137.00 (103.24)" "113.00 (61.15)"
"alk.phos (mean (sd))" "7394.80 (NA)" "3318.90 (3963.90)" "1121.33 (525.39)"
"ast (mean (sd))" "113.52 (NA)" "78.36 (25.08)" "118.73 (41.60)"
"trig (mean (sd))" "88.00 (NA)" "73.50 (26.16)" "157.50 (20.51)"
"platelet (mean (sd))" "221.00 (NA)" "167.00 (22.63)" "216.00 (76.39)"
"protime (mean (sd))" "10.60 (NA)" "11.15 (1.20)" "11.57 (0.60)"
Show functions
print(CreateContTable)
function (vars, strata, data, func.names = c("n", "miss", "mean",
"sd", "median", "q25", "q75", "min", "max", "skew", "kurt"),
func.additional, nonnormal = FALSE, test = FALSE, testNormal = oneway.test,
testNonNormal = kruskal.test)
{
require(e1071)
if (is.data.frame(data) == FALSE) {
stop("The data argument needs to be a data frame (no quote).")
}
varsNotInData <- setdiff(vars, names(data))
if (length(varsNotInData) > 0) {
warning("The data frame does not have ", paste0(varsNotInData,
sep = " "), ". Dropping them.")
vars <- intersect(vars, names(data))
}
if (length(vars) < 1) {
stop("No valid variables.")
}
dat <- data[c(vars)]
if (missing(strata)) {
strata <- rep("Overall", dim(dat)[1])
test <- FALSE
}
else {
presenceOfStrata <- strata %in% names(data)
strata <- strata[presenceOfStrata]
if (length(strata) == 0) {
stop("None of the stratifying variables are present in the data frame")
}
strata <- data[c(strata)]
}
if (any(!sapply(dat, is.numeric))) {
dat <- dat[sapply(dat, is.numeric)]
warning("Non-numeric variables dropped")
}
if (!all(sapply(dat, is.numeric))) {
stop("Can only be run on numeric variables")
}
if (!is.logical(nonnormal) & !is.character(nonnormal)) {
stop("nonnormal argument has to be FALSE/TRUE or character.")
}
if (is.logical(nonnormal)) {
if (length(nonnormal) != 1) {
stop("nonormal has to be a logical vector of length 1")
}
nonnormal <- rep(nonnormal, ncol(dat))
}
if (is.character(nonnormal)) {
nonnormal <- vars %in% nonnormal
}
nonnormal <- as.numeric(nonnormal) + 1
listOfTests <- list(testNormal, testNonNormal)
listOfTests <- listOfTests[nonnormal]
func.indexes <- pmatch(func.names, c("n", "miss", "mean",
"sd", "median", "q25", "q75", "min", "max", "skew", "kurt"))
func.indexes <- func.indexes[!is.na(func.indexes)]
tryCatch.W.E <- function(expr) {
W <- NULL
w.handler <- function(w) {
W <<- w
invokeRestart("muffleWarning")
}
list(value = withCallingHandlers(tryCatch(expr, error = function(e) e),
warning = w.handler), warning = W)
}
sasSkewness <- function(x) {
out <- tryCatch.W.E(skewness(x, na.rm = TRUE, type = 2))
ifelse(is.numeric(out$value), out$value, NaN)
}
sasKurtosis <- function(x) {
out <- tryCatch.W.E(kurtosis(x, na.rm = TRUE, type = 2))
ifelse(is.numeric(out$value), out$value, NaN)
}
functions <- c(n = function(x) length(x), miss = function(x) sum(is.na(x)),
mean = function(x) mean(x, na.rm = TRUE), sd = function(x) sd(x,
na.rm = TRUE), median = function(x) median(x, na.rm = TRUE),
q25 = function(x) quantile(x, probs = 0.25, na.rm = TRUE),
q75 = function(x) quantile(x, probs = 0.75, na.rm = TRUE),
min = function(x) min(x, na.rm = TRUE), max = function(x) max(x,
na.rm = TRUE), skew = function(x) sasSkewness(x),
kurt = function(x) sasKurtosis(x))
functions <- functions[func.indexes]
if (!missing(func.additional)) {
if (!is.list(func.additional) || is.null(names(func.additional))) {
stop("func.additional must be a named list of functions")
}
functions <- c(functions, unlist(func.additional))
func.names <- c(func.names, names(func.additional))
}
result <- by(data = dat, INDICES = strata, FUN = function(strataDat) {
sapply(functions, FUN = function(fun) {
sapply(strataDat, fun)
})
})
pValues <- NULL
if (test == TRUE) {
resTests <- sapply(seq_len(ncol(dat)), FUN = function(i) {
test <- listOfTests[[i]]
var <- dat[, i]
test(var ~ strata[[1]])
}, simplify = FALSE)
pValues <- sapply(resTests, getElement, "p.value")
}
class(result) <- c("ContTable", class(result))
attributes(result) <- c(attributes(result), list(nonnormal = nonnormal,
pValues = pValues))
return(result)
}
print(summary.ContTable)
function (ContTable, digits = 2)
{
print.by(ContTable, digits = digits)
}
print(print.ContTable)
function (ContTable, missing = FALSE, digits = 2, nonnormal = NULL,
quote = TRUE, test = TRUE, pDigits = 3, explain = TRUE)
{
varNames <- rownames(ContTable[[1]])
nRows <- length(varNames)
if (is.null(nonnormal)) {
nonnormal <- attr(ContTable, "nonnormal")
}
else {
if (!is.logical(nonnormal) & !is.character(nonnormal)) {
stop("nonnormal argument has to be FALSE/TRUE or character.")
}
if (is.logical(nonnormal)) {
if (length(nonnormal) != 1) {
stop("nonormal has to be a logical vector of length 1")
}
nonnormal <- rep(nonnormal, nRows)
}
if (is.character(nonnormal)) {
nonnormal <- vars %in% nonnormal
}
nonnormal <- as.numeric(nonnormal) + 1
if (test == TRUE & !is.null(attr(ContTable, "pValues"))) {
nonnormal <- attr(ContTable, "nonnormal")
warning("The nonnormality specifications from the object are used when tests are requested.")
}
}
statNames <- colnames(ContTable[[1]])
funcDefault <- c("n", "miss", "mean", "sd", "median", "q25",
"q75")
if (any(!funcDefault %in% statNames)) {
summary(ContTable)
stop("The object does not contain all necessary statistics. Use summary() method.")
}
ConvertNormal <- function(rowMat) {
fmt <- paste0("%.", digits, "f", " (%.", digits, "f",
")")
out <- sprintf(fmt = fmt, rowMat[, "mean"], rowMat[,
"sd"])
return(out)
}
ConvertNonNormal <- function(rowMat) {
fmt <- paste0("%.", digits, "f [%.", digits, "f, %.",
digits, "f]")
out <- sprintf(fmt = fmt, rowMat[, "median"], rowMat[,
"q25"], rowMat[, "q75"])
return(out)
}
listOfFunctions <- list(normal = ConvertNormal, nonnormal = ConvertNonNormal)
listOfFunctions <- listOfFunctions[nonnormal]
out <- sapply(ContTable, FUN = function(stratum) {
if (is.null(stratum)) {
out2 <- rep("empty", nRows)
}
else {
out2 <- sapply(seq_len(nRows), FUN = function(i) {
fun <- listOfFunctions[[i]]
fun(stratum[i, , drop = FALSE])
}, simplify = TRUE)
}
out2
}, simplify = TRUE)
rownames(out) <- varNames
if (length(attr(ContTable, "dimnames")) > 1) {
colnames(out) <- apply(expand.grid(attr(ContTable, "dimnames")),
MARGIN = 1, paste0, collapse = ":")
}
if (test == TRUE & !is.null(attr(ContTable, "pValues"))) {
fmt <- paste0("%.", pDigits, "f")
p <- sprintf(fmt = fmt, attr(ContTable, "pValues"))
out <- cbind(out, p = p)
}
if (explain) {
what <- c(" (mean (sd))", " (median [IQR])")[nonnormal]
rownames(out) <- paste0(rownames(out), what)
}
if (quote) {
rownames(out) <- paste0("\"", rownames(out), "\"")
colnames(out) <- paste0("\"", colnames(out), "\"")
}
if (length(ContTable) > 1) {
cat(paste0("Stratified by ", paste0(names(attr(ContTable,
"dimnames")), collapse = ":"), "\n"))
}
print(out, quote = quote)
}