经过测试tableone 与stargazer两个R包十分好用,举例代码如下:
1.tableone:#代码来自《R语言与医学统计图形》
install.packages("tableone")
library("tableone")
set.seed(2017) #生成测试数据集
age<-sample(30:90,200,replace=TRUE)
gender<-sample(c('Male','Famale'),200,replace=TRUE)
cholesterol<-rnorm(200,140,30)
head(cholesterol)
BMI<-rnorm(200,27,8)
Smoking<-sample(c('yes','no'),200,replace = TRUE)
SBP<-rnorm(200,130,20)
education<-sample(c('High','middle','low'),200,replace = TRUE)
income<-sample(c('High','middle','low'),200,replace=TRUE)
dt<-data.frame(age=age,gender=gender,cho=round(cholesterol,2),bmi=round(BMI,2),smoking=Smoking,sbp=round(SBP,2),edu=education,income=income)
> vars<-names(dt)
> catvars<-c('gender','smoking','edu','income') #存放分类变量,后面的统计方法会和连续变量有区别,需要提前声明。
> table1<-CreateTableOne(vars=vars,data=dt,factorVars=catvars)
vars<-c('age','cho','sbp','bmi','smoking','edu','income')
table2<-CreateTableOne(vars,dt,catvars,strata=c('gender'))#分层变量,后面会按照分层变量分开进行统计
2.stargazer 这个R包的统计结果格式更加清晰,适合科研文章的数据统计:
仍然是引用上面的测试数据,后续代码如下:
install.packages("stargazer")
library(stargazer)
> stargazer(dt, type = "text", title="Descriptive statistics", digits=1, out="table1.txt")
网友评论