利用R语言绘制基线资料表table1

示例
使用table1库中的CreateTableOne函数

#装载库
library(boot)       #melanoma示例数据来源
library(table1)     #没有p检验的功能,有制表功能
library(tableone)   #有p检验功能的,但是没有制表功能

table_mel <- boot::melanoma   #读取黑色素瘤数据集
#table1的输入格式
#table1(~ 变量1 + 变量2 + ... + 变量n | 分层标签, data = 数据)
#绘制table1
table1(~ sex + age + ulcer + thickness | status, data = table_mel)
#修饰table1
#将数值化的变量,重新转成分类变量的意思
#新数据 <- factor(拟转化的数据,levels = c(数值), labels = c(数值对应的类))
table_mel$status <- factor(
  table_mel$status,
  levels = c(1, 2, 3),
  labels = c("melanoma-1", "melanoma-2", "melanoma-3")
)

#0->female,1->male
table_mel$sex <- factor(
  table_mel$sex,
  levels = c( 0, 1 ),
  labels = c("female", "male")
)

table_mel$ulcer <- factor(
  table_mel$ulcer,
  levels = c(0, 1),
  labels = c("no", "yes")
)

table1(~ sex + age + ulcer + thickness | status, data = table_mel)
#两个人群的pvalue计算函数
pvalue <- function(x, ...) {
  # 构造向量和分层
  y <- unlist(x)
  g <- factor(rep(1:length(x), times=sapply(x, length)))
  if (is.numeric(y)) {
    # 数值型变量采用t检验
    p <- t.test(y ~ g)$p.value
  } else {
    # 类别型变量采用独立chi-squared检验 
    p <- chisq.test(table(y, g))$p.value
  }
  # 输出p值,初始空字符串将输出放置在变量标签下方的行上
  c("", sub("<", "&lt;", format.pval(p, digits=3, eps=0.001)))
}
#因为table1不具备pvalue显著性检验的功能,因此要自己写函数调用计算
#其实就是添加额外列,extra.col是table1提供的计算方法
table1(~ sex + age + ulcer + thickness | status, data = table_mel, extra.col=list(`P-value`=pvalue))

使用tableone库中的CreateTableOne函数

#CreateTableOne的输入格式
#CreateTableOne(vars = 全部变量, factorVars = 因子变量名, strata = 分层变量, data = 数据)
CreateTableOne(vars = c("sex", "age", "thickness", "ulcer", "status"), 
				factorVars = c("sex"), strata = "status", data = table_mel)
table = CreateTableOne(vars = c("sex", "age", "thickness", "ulcer", "status"), 
                           factorVars = c("sex"), strata = "status", data = table_mel)
#将生成的table1存成csv格式
table_mat = print(table, quote = FALSE, noSpaces = T, printToggle = FALSE)
write.csv(table_mat, file = "C://Users//Administrator//Desktop//TABLEONE.csv")
  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值