一直用 tableone 画三线表,整体够用。不过还是有一点,就是想要展示某一组数据的中位数时,默认显示中位数[下四分位数,上四分位数]
,但我们很多时候要显示中位数[最小值,最大值]
,只能手动修改,倒也不是什么大问题,可能也是我对这个包不够了解,没有找到调整的办法。
今天介绍一个同样是画三线表的包:compareGroups。说实话,这个包的命名平平无奇,没有 tabeone, table1 这样的吸引人。但是使用之后,才发现这个包把数据间的分组比较玩得明明白白,其功能也恰如其名。
1数据集
regicor 是 compareGroups 包内置的一个数据集,来自于西班牙 Girona 省一项代表该地区人口的个体的 3 次横断面调查。包含 2294 个样本和 21 个变量。
library(compareGroups)
data("regicor")
head(regicor)
## id year age sex smoker sbp dbp histhtn txhtn
## 6101 2265 2005 70 Female Never smoker 138 75 No No
## 5762 1882 2005 56 Female Never smoker 139 89 No No
## 2992 3000105616 2000 37 Male Current or former < 1y 132 82 No No
## 2611 3000103485 2000 69 Female Never smoker 168 97 No No
## 2762 3000103963 2000 70 Female <NA> NA NA No No
## 1516 3000100883 2000 40 Female Current or former < 1y 108 70 No No
## chol hdl triglyc ldl histchol txchol height weight bmi
## 6101 294 57.00000 93 218.40000 No No 160 64.0 25.00000
## 5762 220 50.00000 160 138.00000 No No 163 67.0 25.21736
## 2992 245 59.80429 89 167.39571 No No 170 70.0 24.22145
## 2611 168 53.17571 116 91.62429 No No 147 68.0 31.46837
## 2762 NA NA NA NA <NA> <NA> NA NA NA
## 1516 NA 68.90000 94 NA No No 158 43.5 17.42509
## phyact pcs mcs cv tocv death todeath
## 6101 304.2000 54.455 58.918 No 1024.882 Yes 1299.16343
## 5762 160.3000 58.165 47.995 No 2756.849 No 39.32629
## 2992 552.7912 43.429 62.585 No 1905.969 No 858.42203
## 2611 522.0000 54.325 57.900 No 1055.380 No 1833.07619
## 2762 NA NA NA <NA> NA <NA> NA
## 1516 386.9505 57.315 47.869 No 3239.241 No 877.61155
2构建表格
不分组 - 描述所有变量
描述数据集中所有变量的统计信息:
descrTable(regicor)
##
## --------Summary descriptives table ---------
##
## _____________________________________________________________________________
## [ALL] N
## N=2294
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## Individual id 1215817624 (1339538686) 2294
## Recruitment year: 2294
## 1995 431 (18.8%)
## 2000 786 (34.3%)
## 2005 1077 (46.9%)
## Age 54.7 (11.0) 2294
## Sex: 2294
## Male 1101 (48.0%)
## Female 1193 (52.0%)
## Smoking status: 2233
## Never smoker 1201 (53.8%)
## Current or former < 1y 593 (26.6%)
## Former >= 1y 439 (19.7%)
## Systolic blood pressure 131 (20.3) 2280
## Diastolic blood pressure 79.7 (10.5) 2280
## History of hypertension: 2286
## Yes 723 (31.6%)
## No 1563 (68.4%)
## Hypertension treatment: 2251
## No 1823 (81.0%)
## Yes 428 (19.0%)
## Total cholesterol 219 (45.2) 2193
## HDL cholesterol 52.7 (14.7) 2225
## Triglycerides 116 (73.9) 2231
## LDL cholesterol 143 (39.7) 2126
## History of hyperchol.: 2273
## Yes 709 (31.2%)
## No 1564 (68.8%)
## Cholesterol treatment: 2239
## No 2011 (89.8%)
## Yes 228 (10.2%)
## Height (cm) 163 (9.22) 2259
## Weight (Kg) 73.4 (13.7) 2259
## Body mass index 27.6 (4.56) 2259
## Physical activity (Kcal/week) 399 (388) 2206
## Physical component 49.6 (9.01) 2054
## Mental component 48.0 (11.0) 2054
## Cardiovascular event: 2163
## No 2071 (95.7%)
## Yes 92 (4.25%)
## Days to cardiovascular event or end of follow-up 1755 (1081) 2163
## Overall death: 2148
## No 1975 (91.9%)
## Yes 173 (8.05%)
## Days to overall death or end of follow-up 1721 (1051) 2148
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
不分组 - 描述部分变量
描述数据集中部分变量的统计信息:
descrTable(~ age + sex + smoker, regicor)
##
## --------Summary descriptives table ---------
##
## ____________________________________________
## [ALL] N
## N=2294
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## Age 54.7 (11.0) 2294
## Sex: 2294
## Male 1101 (48.0%)
## Female 1193 (52.0%)
## Smoking status: 2233
## Never smoker 1201 (53.8%)
## Current or former < 1y 593 (26.6%)
## Former >= 1y 439 (19.7%)
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
分组 - 描述所有变量
比较不同组之间所有变量的差异:
descrTable(year ~ ., regicor, show.all=TRUE)
##
## --------Summary descriptives table by 'Recruitment year'---------
##
## __________________________________________________________________________________________________________________________________
## [ALL] 1995 2000 2005 p.overall
## N=2294 N=431 N=786 N=1077
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## Individual id 1215817624 (1339538686) 1000002914 (1242) 3000104610 (2379) 1996 (1161) 0.000
## Age 54.7 (11.0) 54.1 (11.7) 54.3 (11.2) 55.3 (10.6) 0.078
## Sex: 0.506
## Male 1101 (48.0%) 206 (47.8%) 390 (49.6%) 505 (46.9%)
## Female 1193 (52.0%) 225 (52.2%) 396 (50.4%) 572 (53.1%)
## Smoking status: <0.001
## Never smoker 1201 (53.8%) 234 (56.4%) 414 (54.6%) 553 (52.2%)
## Current or former < 1y 593 (26.6%) 109 (26.3%) 267 (35.2%) 217 (20.5%)
## Former >= 1y 439 (19.7%) 72 (17.3%) 77 (10.2%) 290 (27.4%)
## Systolic blood pressure 131 (20.3) 133 (19.2) 133 (21.3) 129 (19.8) <0.001
## Diastolic blood pressure 79.7 (10.5) 77.0 (10.5) 80.8 (10.3) 79.9 (10.6) <0.001
## History of hypertension: <0.001
## Yes 723 (31.6%) 111 (25.8%) 233 (29.6%) 379 (35.5%)
## No 1563 (68.4%) 320 (74.2%) 553 (70.4%) 690 (64.5%)
## Hypertension treatment: 0.002
## No 1823 (81.0%) 360 (83.5%) 659 (83.8%) 804 (77.8%)
## Yes 428 (19.0%) 71 (16.5%) 127 (16.2%) 230 (22.2%)
## Total cholesterol 219 (45.2) 225 (43.1) 224 (44.4) 213 (45.9) <0.001
## HDL cholesterol 52.7 (14.7) 51.9 (14.5) 52.3 (15.6) 53.2 (14.2) 0.208
## Triglycerides 116 (73.9) 114 (74.4) 114 (70.7) 117 (76.0) 0.582
## LDL cholesterol 143 (39.7) 152 (38.4) 149 (38.6) 136 (39.7) <0.001
## History of hyperchol.: <0.001
## Yes 709 (31.2%) 97 (22.5%) 256 (33.2%) 356 (33.2%)
## No 1564 (68.8%) 334 (77.5%) 515 (66.8%) 715 (66.8%)
## Cholesterol treatment: <0.001
## No 2011 (89.8%) 403 (93.5%) 705 (91.2%) 903 (87.2%)
## Yes 228 (10.2%) 28 (6.50%) 68 (8.80%) 132 (12.8%)
## Height (cm) 163 (9.22) 163 (9.21) 162 (9.39) 163 (9.05) 0.003
## Weight (Kg) 73.4 (13.7) 72.3 (12.6) 73.8 (14.0) 73.6 (13.9) 0.150
## Body mass index 27.6 (4.56) 27.0 (4.15) 28.1 (4.62) 27.6 (4.63) <0.001
## Physical activity (Kcal/week) 399 (388) 491 (419) 422 (377) 351 (378) <0.001
## Physical component 49.6 (9.01) 49.3 (8.08) 49.0 (9.63) 50.1 (8.91) 0.032
## Mental component 48.0 (11.0) 49.2 (11.3) 48.9 (11.0) 46.9 (10.8) <0.001
## Cardiovascular event: 0.161
## No 2071 (95.7%) 388 (97.5%) 706 (95.3%) 977 (95.4%)
## Yes 92 (4.25%) 10 (2.51%) 35 (4.72%) 47 (4.59%)
## Days to cardiovascular event or end of follow-up 1755 (1081) 1784 (1101) 1686 (1080) 1793 (1072) 0.099
## Overall death: <0.001
## No 1975 (91.9%) 369 (95.3%) 657 (89.0%) 949 (92.8%)
## Yes 173 (8.05%) 18 (4.65%) 81 (11.0%) 74 (7.23%)
## Days to overall death or end of follow-up 1721 (1051) 1713 (1042) 1674 (1050) 1758 (1055) 0.252
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
分组 - 描述部分变量
比较不同组之间部分变量的差异:
descrTable(year ~ age + sex, regicor, show.all=TRUE)
##
## --------Summary descriptives table by 'Recruitment year'---------
##
## _____________________________________________________________________
## [ALL] 1995 2000 2005 p.overall
## N=2294 N=431 N=786 N=1077
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## Age 54.7 (11.0) 54.1 (11.7) 54.3 (11.2) 55.3 (10.6) 0.078
## Sex: 0.506
## Male 1101 (48.0%) 206 (47.8%) 390 (49.6%) 505 (46.9%)
## Female 1193 (52.0%) 225 (52.2%) 396 (50.4%) 572 (53.1%)
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
分层 + 分组
在分组的基础上进行分层分析:
tab = descrTable(year ~ ., regicor, show.all=TRUE)
tab_sex = strataTable(tab, "sex")
tab_sex
##
## --------Summary descriptives table ---------
##
## ____________________________________________________________________________________________________________________________________________________________________________________________________________________
## Male Female
## ________________________________________________________________________________ _________________________________________________________________________________
## [ALL] 1995 2000 2005 p.overall [ALL] 1995 2000 2005 p.overall
## N=1101 N=206 N=390 N=505 N=1193 N=225 N=396 N=572
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## Individual id 1249812162 (1347204344) 1000002685 (1255) 3000106796 (942) 1953 (1189) 0.000 1184444626 (1332220205) 1000003123 (1194) 3000102457 (1003) 2033 (1135) 0.000
## Age 54.8 (11.1) 54.1 (11.8) 54.3 (11.2) 55.4 (10.7) 0.212 54.7 (11.0) 54.1 (11.7) 54.4 (11.2) 55.2 (10.6) 0.351
## Sex: . .
## Male 1101 (100%) 206 (100%) 390 (100%) 505 (100%) 0 (0.00%) 0 (0.00%) 0 (0.00%) 0 (0.00%)
## Female 0 (0.00%) 0 (0.00%) 0 (0.00%) 0 (0.00%) 1193 (100%) 225 (100%) 396 (100%) 572 (100%)
## Smoking status: <0.001 <0.001
## Never smoker 301 (28.1%) 52 (26.5%) 112 (29.7%) 137 (27.5%) 900 (77.5%) 182 (83.1%) 302 (79.3%) 416 (74.0%)
## Current or former < 1y 410 (38.3%) 77 (39.3%) 199 (52.8%) 134 (26.9%) 183 (15.7%) 32 (14.6%) 68 (17.8%) 83 (14.8%)
## Former >= 1y 360 (33.6%) 67 (34.2%) 66 (17.5%) 227 (45.6%) 79 (6.80%) 5 (2.28%) 11 (2.89%) 63 (11.2%)
## Systolic blood pressure 134 (18.9) 134 (18.4) 137 (19.3) 132 (18.7) 0.002 129 (21.2) 132 (19.8) 129 (22.6) 127 (20.5) 0.008
## Diastolic blood pressure 81.7 (10.2) 79.0 (9.27) 83.0 (9.54) 81.7 (10.8) <0.001 77.8 (10.5) 75.2 (11.3) 78.6 (10.6) 78.3 (10.0) <0.001
## History of hypertension: 0.002 0.097
## Yes 341 (31.1%) 50 (24.3%) 110 (28.2%) 181 (36.2%) 382 (32.1%) 61 (27.1%) 123 (31.1%) 198 (34.8%)
## No 755 (68.9%) 156 (75.7%) 280 (71.8%) 319 (63.8%) 808 (67.9%) 164 (72.9%) 273 (68.9%) 371 (65.2%)
## Hypertension treatment: <0.001 0.446
## No 889 (82.5%) 175 (85.0%) 342 (87.7%) 372 (77.2%) 934 (79.6%) 185 (82.2%) 317 (80.1%) 432 (78.3%)
## Yes 189 (17.5%) 31 (15.0%) 48 (12.3%) 110 (22.8%) 239 (20.4%) 40 (17.8%) 79 (19.9%) 120 (21.7%)
## Total cholesterol 217 (42.7) 224 (43.9) 224 (43.9) 210 (40.3) <0.001 220 (47.4) 226 (42.4) 224 (44.9) 216 (50.3) 0.004
## HDL cholesterol 47.5 (12.6) 46.5 (13.1) 47.3 (12.6) 48.1 (12.4) 0.290 57.5 (15.0) 56.9 (13.9) 57.4 (16.7) 57.8 (14.2) 0.783
## Triglycerides 131 (87.4) 131 (91.5) 128 (81.1) 132 (90.3) 0.817 101 (55.2) 97.8 (47.9) 99.7 (55.1) 104 (57.6) 0.281
## LDL cholesterol 145 (38.5) 153 (39.6) 152 (39.1) 137 (36.0) <0.001 142 (40.7) 150 (37.3) 146 (38.0) 136 (42.6) <0.001
## History of hyperchol.: 0.007 0.006
## Yes 353 (32.3%) 48 (23.3%) 138 (35.8%) 167 (33.2%) 356 (30.2%) 49 (21.8%) 118 (30.6%) 189 (33.3%)
## No 741 (67.7%) 158 (76.7%) 247 (64.2%) 336 (66.8%) 823 (69.8%) 176 (78.2%) 268 (69.4%) 379 (66.7%)
## Cholesterol treatment: 0.256 <0.001
## No 962 (89.4%) 189 (91.7%) 348 (90.2%) 425 (87.8%) 1049 (90.2%) 214 (95.1%) 357 (92.2%) 478 (86.8%)
## Yes 114 (10.6%) 17 (8.25%) 38 (9.84%) 59 (12.2%) 114 (9.80%) 11 (4.89%) 30 (7.75%) 73 (13.2%)
## Height (cm) 169 (7.34) 170 (7.34) 168 (7.17) 170 (7.43) 0.021 157 (6.41) 158 (6.31) 156 (6.50) 158 (6.24) <0.001
## Weight (Kg) 79.7 (11.9) 77.6 (11.7) 80.1 (12.3) 80.2 (11.6) 0.023 67.6 (12.6) 67.3 (11.3) 67.6 (12.6) 67.7 (13.0) 0.919
## Body mass index 27.8 (3.73) 26.9 (3.64) 28.2 (3.89) 27.9 (3.58) <0.001 27.5 (5.21) 27.2 (4.57) 28.0 (5.25) 27.3 (5.39) 0.084
## Physical activity (Kcal/week) 407 (425) 422 (418) 356 (362) 439 (467) 0.014 392 (351) 553 (412) 486 (382) 273 (253) <0.001
## Physical component 51.0 (8.01) 50.1 (6.71) 50.9 (8.58) 51.5 (8.07) 0.110 48.3 (9.68) 48.6 (9.16) 47.1 (10.2) 48.9 (9.45) 0.027
## Mental component 50.4 (9.91) 52.1 (9.67) 50.9 (10.2) 49.2 (9.67) 0.001 45.7 (11.5) 46.5 (12.2) 46.9 (11.3) 44.7 (11.2) 0.017
## Cardiovascular event: 0.272 0.139
## No 996 (95.6%) 190 (96.9%) 345 (94.3%) 461 (96.0%) 1075 (95.9%) 198 (98.0%) 361 (96.3%) 516 (94.9%)
## Yes 46 (4.41%) 6 (3.06%) 21 (5.74%) 19 (3.96%) 46 (4.10%) 4 (1.98%) 14 (3.73%) 28 (5.15%)
## Days to cardiovascular event or end of follow-up 1744 (1082) 1718 (1127) 1646 (1076) 1830 (1064) 0.046 1764 (1079) 1848 (1075) 1724 (1083) 1761 (1079) 0.421
## Overall death: 0.002 0.018
## No 943 (91.6%) 174 (93.5%) 321 (87.5%) 448 (93.9%) 1032 (92.3%) 195 (97.0%) 336 (90.6%) 501 (91.8%)
## Yes 87 (8.45%) 12 (6.45%) 46 (12.5%) 29 (6.08%) 86 (7.69%) 6 (2.99%) 35 (9.43%) 45 (8.24%)
## Days to overall death or end of follow-up 1677 (1029) 1690 (1031) 1664 (1034) 1682 (1027) 0.952 1762 (1070) 1735 (1055) 1684 (1067) 1825 (1075) 0.139
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
3导出表格
保存为生信人最爱的 Tsv 格式:
export2csv(tab, "table1.tsv", sep = '\t')
本文仅抛砖引玉,还可以对表格进行各种个性化修改,详情见:
https://cran.r-project.org/web/packages/compareGroups/vignettes/compareGroups_vignette.html
公众号:R 语言统计画图,专注于分享 R 语言统计画图的知识、实战案例和学习资源。感谢关注、点赞和分享。