0%

利用tableone包绘制研究人群基线特征表

在医学研究领域,通常用Table 1来描述所研究人群的特征情况。Table 1包含连续性变量的均值、分类变量所占百分比以及p值等信息。为了创建Table 1有时可能会非常耗时。想象一下:我们有3组数据,每组数据10个变量(如年龄,性别等),需对变量计算均值(标准差)、参与人数(百分比)。这样的话我们需要在表中填充60个数据。

tableone包的作者是Kazuki Yoshida和Justin Bohn,利用这个包可以很方便的在R中创建表格。

一、创建Table 1

(一)创建并导入数据

本文数据是由rnorm()sample()函数模拟产生的,从这里下载。

1
2
3
4
5
6
7
8
9
10
dt <- read.csv(file.choose(), header=TRUE, sep=",")
head(dt)

Age Gender Cholesterol SystolicBP BMI Smoking Education
1 67.9 Female 236.4 129.8 26.4 Yes High
2 54.8 Female 256.3 133.4 28.4 No Medium
3 68.4 Male 198.7 158.5 24.1 Yes High
4 67.9 Male 205.0 136.0 19.9 No Low
5 60.9 Male 207.7 145.4 26.7 No Medium
6 44.9 Female 222.5 130.6 30.6 No Low

(二)设定变量并定义分类变量

现在,我们使用tableone包来创建Table 1。

  1. 首先加载tableone包,并创建我们想要放到Table 1中的变量列表。
  2. 定义分类变量。
1
2
3
4
5
6
7
8
9
#加载tableone包
library(tableone)

#创建变量列表
listVars <- c("Age", "Gender", "Cholesterol", "SystolicBP", "BMI", "Smoking",
"Education")

#定义分类变量
catVars <- c("Gender","Smoking","Education")

(三)总体人群表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
table1 <- CreateTableOne(vars = listVars, data = dt, factorVars = catVars)

Overall
n 250
Age (mean (sd)) 57.50 (7.85)
Gender = Male (%) 107 (42.8)
Cholesterol (mean (sd)) 224.12 (24.90)
SystolicBP (mean (sd)) 145.51 (10.08)
BMI (mean (sd)) 26.79 (4.37)
Smoking = Yes (%) 72 (28.8)
Education (%)
High 108 (43.2)
Low 71 (28.4)
Medium 71 (28.4)

(四)特定人群(分类)表格

我们更感兴趣的是分别为男性和女性创建Table 1,并比较他们的均值和百分比。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 从变量列表中移除Gender
listVar <- c("Age", "Cholesterol", "SystolicBP", "BMI", "Smoking", "Education")
table1 <- CreateTableOne(listVars, dt, catVars, strata = c("Gender"))

Stratified by Gender
Female Male p test
n 143 107
Age (mean (sd)) 56.94 (8.05) 58.25 (7.55) 0.191
Cholesterol (mean (sd)) 224.80 (25.06) 223.21 (24.78) 0.620
SystolicBP (mean (sd)) 144.95 (10.99) 146.27 (8.71) 0.305
BMI (mean (sd)) 26.74 (4.58) 26.84 (4.09) 0.859
Smoking = Yes (%) 37 (25.9) 35 (32.7) 0.298
Education (%) 0.289
High 56 (39.2) 52 (48.6)
Low 45 (31.5) 26 (24.3)
Medium 42 (29.4) 29 (27.1)

tableone包还可以做更多事情。例如:计算非正态分布变量的中位数和四分位数,对不同组之间作各种假设检验的对比。