希望有一天有人也能翻翻我写的小说和文章,
悄地找找藏匿其中的痛苦与可恶
文章table 1 的自动化生成
if(FALSE){# 如果未安装改为true
install.packages("tableone")
}
library(survival)
data(pbc)## get the data
Note that the echo = FALSE
parameter was added to the code chunk to prevent printing of the R code that generated the plot.
# 单组总结
library(tableone)
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")
## 指定变量
myVars <- c("time", "status", "trt", "age", "sex", "ascites", "hepato",
"spiders", "edema", "bili", "chol", "albumin", "copper", "alk.phos",
"ast", "trig", "platelet", "protime", "stage")
## 指定分类变量
catVars <- c("status", "trt", "ascites", "hepato",
"spiders", "edema", "stage")
## 建立table1
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)
## 同时分类变量中可能存在缺失
## 可以使用showAllLevels参数设置显示
print(tab2, showAllLevels = TRUE)
##
## level Overall
## n 418
## time (mean (SD)) 1917.78 (1104.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)) 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)
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
##
# 指定非正态变量
biomarkers <- c("bili","chol","copper","alk.phos","ast","trig","protime")
print(tab2, nonnormal = biomarkers)
##
## 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 (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 (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)
# 最终显示四分位数和中位数
# strata参数设置分组
tab3 <- CreateTableOne(vars = myVars, strata = "trt" , data = pbc, factorVars = catVars)
tab3
## Stratified by trt
## 1 2 p test
## n 158 154
## time (mean (SD)) 2015.62 (1094.12) 1996.86 (1155.93) 0.883
## status (%) 0.894
## 0 83 (52.5) 85 ( 55.2)
## 1 10 ( 6.3) 9 ( 5.8)
## 2 65 (41.1) 60 ( 39.0)
## trt = 2 (%) 0 ( 0.0) 154 (100.0) <0.001
## age (mean (SD)) 51.42 (11.01) 48.58 (9.96) 0.018
## sex = f (%) 137 (86.7) 139 ( 90.3) 0.421
## ascites = 1 (%) 14 ( 8.9) 10 ( 6.5) 0.567
## hepato = 1 (%) 73 (46.2) 87 ( 56.5) 0.088
## spiders = 1 (%) 45 (28.5) 45 ( 29.2) 0.985
## edema (%) 0.877
## 0 132 (83.5) 131 ( 85.1)
## 0.5 16 (10.1) 13 ( 8.4)
## 1 10 ( 6.3) 10 ( 6.5)
## bili (mean (SD)) 2.87 (3.63) 3.65 (5.28) 0.131
## chol (mean (SD)) 365.01 (209.54) 373.88 (252.48) 0.748
## albumin (mean (SD)) 3.52 (0.44) 3.52 (0.40) 0.874
## copper (mean (SD)) 97.64 (90.59) 97.65 (80.49) 0.999
## alk.phos (mean (SD)) 2021.30 (2183.44) 1943.01 (2101.69) 0.747
## ast (mean (SD)) 120.21 (54.52) 124.97 (58.93) 0.460
## trig (mean (SD)) 124.14 (71.54) 125.25 (58.52) 0.886
## platelet (mean (SD)) 258.75 (100.32) 265.20 (90.73) 0.555
## protime (mean (SD)) 10.65 (0.85) 10.80 (1.14) 0.197
## stage (%) 0.201
## 1 12 ( 7.6) 4 ( 2.6)
## 2 35 (22.2) 32 ( 20.8)
## 3 56 (35.4) 64 ( 41.6)
## 4 55 (34.8) 54 ( 35.1)
# 最终显示分组信息并添加p值
# 当然如果不符合正态那么就需要选择其他的统计方法
# 使用nonnormal 参数指定非正态,使用kruskal.test,两组为wilcox.test
# exact 参数指定确切概率法fisher的分类比较
print(tab3, nonnormal = biomarkers, exact = "stage")
## Stratified by trt
## 1 2
## n 158 154
## time (mean (SD)) 2015.62 (1094.12) 1996.86 (1155.93)
## status (%)
## 0 83 (52.5) 85 ( 55.2)
## 1 10 ( 6.3) 9 ( 5.8)
## 2 65 (41.1) 60 ( 39.0)
## trt = 2 (%) 0 ( 0.0) 154 (100.0)
## age (mean (SD)) 51.42 (11.01) 48.58 (9.96)
## sex = f (%) 137 (86.7) 139 ( 90.3)
## ascites = 1 (%) 14 ( 8.9) 10 ( 6.5)
## hepato = 1 (%) 73 (46.2) 87 ( 56.5)
## spiders = 1 (%) 45 (28.5) 45 ( 29.2)
## edema (%)
## 0 132 (83.5) 131 ( 85.1)
## 0.5 16 (10.1) 13 ( 8.4)
## 1 10 ( 6.3) 10 ( 6.5)
## bili (median [IQR]) 1.40 [0.80, 3.20] 1.30 [0.72, 3.60]
## chol (median [IQR]) 315.50 [247.75, 417.00] 303.50 [254.25, 377.00]
## albumin (mean (SD)) 3.52 (0.44) 3.52 (0.40)
## copper (median [IQR]) 73.00 [40.00, 121.00] 73.00 [43.00, 139.00]
## alk.phos (median [IQR]) 1214.50 [840.75, 2028.00] 1283.00 [922.50, 1949.75]
## ast (median [IQR]) 111.60 [76.73, 151.51] 117.40 [83.78, 151.90]
## trig (median [IQR]) 106.00 [84.50, 146.00] 113.00 [84.50, 155.00]
## platelet (mean (SD)) 258.75 (100.32) 265.20 (90.73)
## protime (median [IQR]) 10.60 [10.03, 11.00] 10.60 [10.00, 11.40]
## stage (%)
## 1 12 ( 7.6) 4 ( 2.6)
## 2 35 (22.2) 32 ( 20.8)
## 3 56 (35.4) 64 ( 41.6)
## 4 55 (34.8) 54 ( 35.1)
## Stratified by trt
## p test
## n
## time (mean (SD)) 0.883
## status (%) 0.894
## 0
## 1
## 2
## trt = 2 (%) <0.001
## age (mean (SD)) 0.018
## sex = f (%) 0.421
## ascites = 1 (%) 0.567
## hepato = 1 (%) 0.088
## spiders = 1 (%) 0.985
## edema (%) 0.877
## 0
## 0.5
## 1
## bili (median [IQR]) 0.842 nonnorm
## chol (median [IQR]) 0.544 nonnorm
## albumin (mean (SD)) 0.874
## copper (median [IQR]) 0.717 nonnorm
## alk.phos (median [IQR]) 0.812 nonnorm
## ast (median [IQR]) 0.459 nonnorm
## trig (median [IQR]) 0.370 nonnorm
## platelet (mean (SD)) 0.555
## protime (median [IQR]) 0.588 nonnorm
## stage (%) 0.205 exact
## 1
## 2
## 3
## 4
# 使用quote 参数添加引号,然后复制到excel
print(tab3, nonnormal = biomarkers, exact = "stage", quote = TRUE, noSpaces = TRUE)# nosapces为去除空格的参数
## "Stratified by trt"
## "" "1"
## "n" "158"
## "time (mean (SD))" "2015.62 (1094.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])" "1214.50 [840.75, 2028.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))" "1996.86 (1155.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])" "1283.00 [922.50, 1949.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.205" "exact"
## " 1" "4 (2.6)" "" ""
## " 2" "32 (20.8)" "" ""
## " 3" "64 (41.6)" "" ""
## " 4" "54 (35.1)" "" ""
# 写入csv文件
tab3Mat <- print(tab3, nonnormal = biomarkers, exact = "stage", quote = FALSE, noSpaces = TRUE, printToggle = FALSE)# printToggle避免非必要的打印
## 写入
# write.csv(tab3Mat, file = "myTable.csv")
无话可说 love&peace