Kazuki Yoshida 개발한 tableone package. 나름 유용한 측면이 있고, STD를 계산하는 것도 있어서 PSM 사용시 더욱 유용할 것으로 보인다.
## tableone package itself
library(tableone)
## survival package for Mayo Clinic's PBC data
library(survival)
data(pbc)
CreateTableOne(data = pbc)
##
## Overall
## n 418
## id (mean (SD)) 209.50 (120.81)
## time (mean (SD)) 1917.78 (1104.67)
## status (mean (SD)) 0.83 (0.96)
## trt (mean (SD)) 1.49 (0.50)
## age (mean (SD)) 50.74 (10.45)
## sex = f (%) 374 (89.5)
## ascites (mean (SD)) 0.08 (0.27)
## hepato (mean (SD)) 0.51 (0.50)
## spiders (mean (SD)) 0.29 (0.45)
## edema (mean (SD)) 0.10 (0.25)
## 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)
## stage (mean (SD)) 3.02 (0.88)
## 이름변경 해보기
## Get variables names
dput(names(pbc))
## c("id", "time", "status", "trt", "age", "sex", "ascites", "hepato",
## "spiders", "edema", "bili", "chol", "albumin", "copper", "alk.phos",
## "ast", "trig", "platelet", "protime", "stage")
## Vector of variables to summarize
myVars <- c("time", "status", "trt", "age", "sex", "ascites", "hepato",
"spiders", "edema", "bili", "chol", "albumin", "copper", "alk.phos",
"ast", "trig", "platelet", "protime", "stage")
## Vector of categorical variables that need transformation
catVars <- c("status", "trt", "ascites", "hepato",
"spiders", "edema", "stage")
## Create a TableOne object
tab2 <- CreateTableOne(vars = myVars, data = pbc, factorVars = catVars)
tab2
##
## Overall
## n 418
## time (mean (SD)) 1917.78 (1104.67)
## status (%)
## 0 232 (55.5)
## 1 25 ( 6.0)
## 2 161 (38.5)
## trt = 2 (%) 154 (49.4)
## age (mean (SD)) 50.74 (10.45)
## sex = f (%) 374 (89.5)
## ascites = 1 (%) 24 ( 7.7)
## hepato = 1 (%) 160 (51.3)
## spiders = 1 (%) 90 (28.8)
## edema (%)
## 0 354 (84.7)
## 0.5 44 (10.5)
## 1 20 ( 4.8)
## 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)
## stage (%)
## 1 21 ( 5.1)
## 2 92 (22.3)
## 3 155 (37.6)
## 4 144 (35.0)
# 모든 범주형 변수에 대한 특성 확인인
print(tab2, showAllLevels = TRUE, formatOptions = list(big.mark = ","))
##
## level Overall
## n 418
## time (mean (SD)) 1,917.78 (1,104.67)
## status (%) 0 232 (55.5)
## 1 25 ( 6.0)
## 2 161 (38.5)
## trt (%) 1 158 (50.6)
## 2 154 (49.4)
## age (mean (SD)) 50.74 (10.45)
## sex (%) m 44 (10.5)
## f 374 (89.5)
## ascites (%) 0 288 (92.3)
## 1 24 ( 7.7)
## hepato (%) 0 152 (48.7)
## 1 160 (51.3)
## spiders (%) 0 222 (71.2)
## 1 90 (28.8)
## edema (%) 0 354 (84.7)
## 0.5 44 (10.5)
## 1 20 ( 4.8)
## 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)) 1,982.66 (2,140.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)
## stage (%) 1 21 ( 5.1)
## 2 92 (22.3)
## 3 155 (37.6)
## 4 144 (35.0)
# 요약값 확인 (missing value 표시시)
summary(tab2)
##
## ### Summary of continuous variables ###
##
## strata: Overall
## n miss p.miss mean sd median p25 p75 min max skew kurt
## time 418 0 0.0 1918 1e+03 1730 1e+03 2614 41.0 4795 0.47 -0.5
## age 418 0 0.0 51 1e+01 51 4e+01 58 26.3 78 0.09 -0.6
## bili 418 0 0.0 3 4e+00 1 8e-01 3 0.3 28 2.72 8.1
## chol 418 134 32.1 370 2e+02 310 2e+02 400 120.0 1775 3.41 14.3
## albumin 418 0 0.0 3 4e-01 4 3e+00 4 2.0 5 -0.47 0.6
## copper 418 108 25.8 98 9e+01 73 4e+01 123 4.0 588 2.30 7.6
## alk.phos 418 106 25.4 1983 2e+03 1259 9e+02 1980 289.0 13862 2.99 9.7
## ast 418 106 25.4 123 6e+01 115 8e+01 152 26.4 457 1.45 4.3
## trig 418 136 32.5 125 7e+01 108 8e+01 151 33.0 598 2.52 11.8
## platelet 418 11 2.6 257 1e+02 251 2e+02 318 62.0 721 0.63 0.9
## protime 418 2 0.5 11 1e+00 11 1e+01 11 9.0 18 2.22 10.0
##
## =======================================================================================
##
## ### Summary of categorical variables ###
##
## strata: Overall
## var n miss p.miss level freq percent cum.percent
## status 418 0 0.0 0 232 55.5 55.5
## 1 25 6.0 61.5
## 2 161 38.5 100.0
##
## trt 418 106 25.4 1 158 50.6 50.6
## 2 154 49.4 100.0
##
## sex 418 0 0.0 m 44 10.5 10.5
## f 374 89.5 100.0
##
## ascites 418 106 25.4 0 288 92.3 92.3
## 1 24 7.7 100.0
##
## hepato 418 106 25.4 0 152 48.7 48.7
## 1 160 51.3 100.0
##
## spiders 418 106 25.4 0 222 71.2 71.2
## 1 90 28.8 100.0
##
## edema 418 0 0.0 0 354 84.7 84.7
## 0.5 44 10.5 95.2
## 1 20 4.8 100.0
##
## stage 418 6 1.4 1 21 5.1 5.1
## 2 92 22.3 27.4
## 3 155 37.6 65.0
## 4 144 35.0 100.0
##
# 치우쳐진 변수에 대해 IQR을 포함한 median 값을 제시
biomarkers <- c("bili","chol","copper","alk.phos","ast","trig","protime")
print(tab2, nonnormal = biomarkers, formatOptions = list(big.mark = ","))
##
## Overall
## n 418
## time (mean (SD)) 1,917.78 (1,104.67)
## status (%)
## 0 232 (55.5)
## 1 25 ( 6.0)
## 2 161 (38.5)
## trt = 2 (%) 154 (49.4)
## age (mean (SD)) 50.74 (10.45)
## sex = f (%) 374 (89.5)
## ascites = 1 (%) 24 ( 7.7)
## hepato = 1 (%) 160 (51.3)
## spiders = 1 (%) 90 (28.8)
## edema (%)
## 0 354 (84.7)
## 0.5 44 (10.5)
## 1 20 ( 4.8)
## 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]) 1,259.00 [871.50, 1,980.00]
## ast (median [IQR]) 114.70 [80.60, 151.90]
## 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]
## stage (%)
## 1 21 ( 5.1)
## 2 92 (22.3)
## 3 155 (37.6)
## 4 144 (35.0)
tab3 <- CreateTableOne(vars = myVars, strata = "trt" , data = pbc, factorVars = catVars)
print(tab3, nonnormal = biomarkers, formatOptions = list(big.mark = ","))
## Stratified by trt
## 1
## n 158
## time (mean (SD)) 2,015.62 (1,094.12)
## status (%)
## 0 83 (52.5)
## 1 10 ( 6.3)
## 2 65 (41.1)
## trt = 2 (%) 0 ( 0.0)
## age (mean (SD)) 51.42 (11.01)
## sex = f (%) 137 (86.7)
## ascites = 1 (%) 14 ( 8.9)
## hepato = 1 (%) 73 (46.2)
## spiders = 1 (%) 45 (28.5)
## edema (%)
## 0 132 (83.5)
## 0.5 16 (10.1)
## 1 10 ( 6.3)
## bili (median [IQR]) 1.40 [0.80, 3.20]
## chol (median [IQR]) 315.50 [247.75, 417.00]
## albumin (mean (SD)) 3.52 (0.44)
## copper (median [IQR]) 73.00 [40.00, 121.00]
## alk.phos (median [IQR]) 1,214.50 [840.75, 2,028.00]
## ast (median [IQR]) 111.60 [76.73, 151.51]
## trig (median [IQR]) 106.00 [84.50, 146.00]
## platelet (mean (SD)) 258.75 (100.32)
## protime (median [IQR]) 10.60 [10.03, 11.00]
## stage (%)
## 1 12 ( 7.6)
## 2 35 (22.2)
## 3 56 (35.4)
## 4 55 (34.8)
## Stratified by trt
## 2 p test
## n 154
## time (mean (SD)) 1,996.86 (1,155.93) 0.883
## status (%) 0.894
## 0 85 ( 55.2)
## 1 9 ( 5.8)
## 2 60 ( 39.0)
## trt = 2 (%) 154 (100.0) <0.001
## age (mean (SD)) 48.58 (9.96) 0.018
## sex = f (%) 139 ( 90.3) 0.421
## ascites = 1 (%) 10 ( 6.5) 0.567
## hepato = 1 (%) 87 ( 56.5) 0.088
## spiders = 1 (%) 45 ( 29.2) 0.985
## edema (%) 0.877
## 0 131 ( 85.1)
## 0.5 13 ( 8.4)
## 1 10 ( 6.5)
## bili (median [IQR]) 1.30 [0.72, 3.60] 0.842 nonnorm
## chol (median [IQR]) 303.50 [254.25, 377.00] 0.544 nonnorm
## albumin (mean (SD)) 3.52 (0.40) 0.874
## copper (median [IQR]) 73.00 [43.00, 139.00] 0.717 nonnorm
## alk.phos (median [IQR]) 1,283.00 [922.50, 1,949.75] 0.812 nonnorm
## ast (median [IQR]) 117.40 [83.78, 151.90] 0.459 nonnorm
## trig (median [IQR]) 113.00 [84.50, 155.00] 0.370 nonnorm
## platelet (mean (SD)) 265.20 (90.73) 0.555
## protime (median [IQR]) 10.60 [10.00, 11.40] 0.588 nonnorm
## stage (%) 0.201
## 1 4 ( 2.6)
## 2 32 ( 20.8)
## 3 64 ( 41.6)
## 4 54 ( 35.1)