library(compareGroups) # 加载包
## Warning: package 'compareGroups' was built under R version 3.6.3
testdata<-read.csv2("seerdev.csv",header = T,sep = ",")#读取外部csv格式数据并将数据赋值给testdata
testdata$age<-as.numeric(testdata$age)#把age变为数值型变量
testdata$sex<-factor(testdata$sex,labels=c("male","female"))#把sex变量因子化
str(testdata)#查看数据集结构
## 'data.frame': 286 obs. of 10 variables:
## $ sex : Factor w/ 2 levels "male","female": 1 1 1 1 1 1 1 1 1 1 ...
## $ age : num 51 60 60 51 35 48 72 67 58 63 ...
## $ BMIteam : int 2 0 0 0 0 5 0 3 0 3 ...
## $ diabetes: int 0 0 0 0 0 0 0 0 1 0 ...
## $ heart : int 0 0 0 0 0 1 0 0 0 0 ...
## $ smoke : int 0 1 0 1 0 1 0 1 0 1 ...
## $ alchol : int 0 1 0 1 0 1 0 1 0 1 ...
## $ status : int 0 0 1 0 0 0 1 1 1 0 ...
## $ OS : int 22 63 4 60 77 75 8 33 13 72 ...
## $ team : int 0 0 1 0 0 0 1 1 1 0 ...
attach(testdata)#加载数据集,这样后续应用就方便了
descrTable( ~ ., data = testdata)
##
## --------Summary descriptives table ---------
##
## __________________________
## [ALL] N
## N=286
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## sex: 286
## male 237 (82.9%)
## female 49 (17.1%)
## age 54.9 (10.2) 286
## BMIteam 1.48 (1.41) 286
## diabetes 0.16 (0.37) 286
## heart 0.04 (0.19) 286
## smoke 0.44 (0.50) 286
## alchol 0.31 (0.46) 286
## status 0.29 (0.45) 286
## OS 29.9 (19.0) 286
## team 0.40 (0.49) 286
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
#~ 的左边为分组变量或不填变量,不填变量则计算总研究人群的基线特征,并且不进行统计检验;
#~ 的右边为基线特征表中需要统计分析的变量,如果没填变量仅出现一个.,则默认数据集的全部变量进行统计。
descrTable(alchol ~ ., data = testdata)
##
## --------Summary descriptives table by 'alchol'---------
##
## ____________________________________________
## 0 1 p.overall
## N=198 N=88
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## sex: <0.001
## male 150 (75.8%) 87 (98.9%)
## female 48 (24.2%) 1 (1.14%)
## age 54.0 (11.1) 56.8 (7.52) 0.015
## BMIteam 1.38 (1.39) 1.70 (1.43) 0.080
## diabetes 0.15 (0.35) 0.19 (0.40) 0.344
## heart 0.04 (0.19) 0.05 (0.21) 0.697
## smoke 0.25 (0.43) 0.86 (0.35) <0.001
## status 0.31 (0.46) 0.25 (0.44) 0.309
## OS 27.7 (18.3) 34.7 (19.7) 0.005
## team 0.42 (0.49) 0.36 (0.48) 0.375
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
#alchol为分类变量,也是基线表的y变量,表示是否饮酒。
descrTable(alchol ~ age + sex + smoke , data = testdata)
##
## --------Summary descriptives table by 'alchol'---------
##
## ____________________________________________
## 0 1 p.overall
## N=198 N=88
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## age 54.0 (11.1) 56.8 (7.52) 0.015
## sex: <0.001
## male 150 (75.8%) 87 (98.9%)
## female 48 (24.2%) 1 (1.14%)
## smoke 0.25 (0.43) 0.86 (0.35) <0.001
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
# ~左边为分组变量,右边为基线表行变量
descrTable(alchol ~ . -age - sex, data = testdata)
##
## --------Summary descriptives table by 'alchol'---------
##
## __________________________________________
## 0 1 p.overall
## N=198 N=88
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## BMIteam 1.38 (1.39) 1.70 (1.43) 0.080
## diabetes 0.15 (0.35) 0.19 (0.40) 0.344
## heart 0.04 (0.19) 0.05 (0.21) 0.697
## smoke 0.25 (0.43) 0.86 (0.35) <0.001
## status 0.31 (0.46) 0.25 (0.44) 0.309
## OS 27.7 (18.3) 34.7 (19.7) 0.005
## team 0.42 (0.49) 0.36 (0.48) 0.375
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
#如果基线表纳入的变量较多,也可以选择移除数据集中变量的形式来绘制基线特征表。可以通过-号的形式移除变量。
descrTable(alchol ~ ., data = testdata,subset = age > 60)
##
## --------Summary descriptives table by 'alchol'---------
##
## ____________________________________________
## 0 1 p.overall
## N=60 N=27
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## sex: 0.019
## male 43 (71.7%) 26 (96.3%)
## female 17 (28.3%) 1 (3.70%)
## age 66.9 (4.41) 65.6 (4.48) 0.211
## BMIteam 1.48 (1.49) 1.37 (1.45) 0.740
## diabetes 0.30 (0.46) 0.33 (0.48) 0.763
## heart 0.12 (0.32) 0.00 (0.00) 0.007
## smoke 0.25 (0.44) 0.93 (0.27) <0.001
## status 0.30 (0.46) 0.15 (0.36) 0.103
## OS 28.2 (16.3) 33.5 (16.7) 0.171
## team 0.30 (0.46) 0.19 (0.40) 0.240
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
#除了选择部分变量进行统计分析外,我们还可以选择亚组人群进行分析,比如说只选大于60的老年人分析。
#可以从下表看到,里面只有大于60岁的老年人了
descrTable(alchol ~ ., data = testdata, selec = list( sex == 0, age> 60))
## Warning in compare.i(X[, i], y = y, selec.i = selec[i], method.i = method[i], :
## Some levels of 'sex' are removed since no observation in that/those levels
##
## --------Summary descriptives table by 'alchol'---------
##
## __________________________________________
## 0 1 p.overall
## N=198 N=88
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## sex . . .
## age 66.9 (4.41) 65.6 (4.48) 0.211
## BMIteam 1.38 (1.39) 1.70 (1.43) 0.080
## diabetes 0.15 (0.35) 0.19 (0.40) 0.344
## heart 0.04 (0.19) 0.05 (0.21) 0.697
## smoke 0.25 (0.43) 0.86 (0.35) <0.001
## status 0.31 (0.46) 0.25 (0.44) 0.309
## OS 27.7 (18.3) 34.7 (19.7) 0.005
## team 0.42 (0.49) 0.36 (0.48) 0.375
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
#利用list函数还可以在亚组人群基础上选取特定变量进行研究。
descrTable(alchol ~ ., data = testdata, method =c(age=2))
##
## --------Summary descriptives table by 'alchol'---------
##
## ______________________________________________________
## 0 1 p.overall
## N=198 N=88
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
## sex: <0.001
## male 150 (75.8%) 87 (98.9%)
## female 48 (24.2%) 1 (1.14%)
## age 54.0 [47.0;62.0] 57.0 [51.0;62.0] 0.063
## BMIteam 1.38 (1.39) 1.70 (1.43) 0.080
## diabetes 0.15 (0.35) 0.19 (0.40) 0.344
## heart 0.04 (0.19) 0.05 (0.21) 0.697
## smoke 0.25 (0.43) 0.86 (0.35) <0.001
## status 0.31 (0.46) 0.25 (0.44) 0.309
## OS 27.7 (18.3) 34.7 (19.7) 0.005
## team 0.42 (0.49) 0.36 (0.48) 0.375
## ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
#默认情况下,连续变量认为是正态分布变量,在生成基线特征表时,将使用均值+标准差描述连续变量。
#如果要指定某一连续变量为非正态分布变量,比如说指定age为非正态分布变量,则method =c(age=2)
#method中的数字:1表示正态分布;2表示连续非正态;3表示分类变量;NA表示执行Shapiro-Wilks检验来确定是正态还是非正态分布。
#导出excel格式的表格
excel.table<-descrTable(alchol ~ ., data = testdata, method =c(age=2))
export2xls(excel.table, file='table1.xlsx')
#导出word格式的表格
export2word(excel.table, file='table1.docx')
word格式的输出文件
网友评论