R语言一键制作数据统计三线表(二):添加显著性分析、个性化制表

还是沿用之前的数据,我们继续探讨table1的制表功能。这里主要展示个性化制表,变化不同形式的表,以及最为重要的显著性检验P值。

library(table1) 
library(boot)
data <- melanoma
data$status <-  factor(data$status, 
                      levels=c(2,1,3),
                      labels=c("Alive", "Melanoma death", "Non-melanoma death"))

data$sex <- factor(data$sex, levels=c(1,0), labels=c("Male", "Female"))

data$ulcer <- factor(data$ulcer, levels=c(0,1),labels=c("Absent", "Present"))

table1可内置多个三线表的形式,指定topclass参数即可,格式是Rtable1-,后面接参数有zebra、grid、times、center等。


?table1
#topclass
table1(~ factor(sex) + age + factor(ulcer) + thickness | status, 
       data=data, topclass = "Rtable1-grid Rtable1-zebra")

接着即可添加统计P值,但是table1没有内置功能,所以需要使用外部函数。这里说明下:仅仅是为了展示这个功能所以才这样排列数据的,具体问题具体对待!


pvalue <- function(x, ...) {
  y <- unlist(x)
  g <- factor(rep(1:length(x), times=sapply(x, length)))
  if (is.numeric(y)) {
    p <- t.test(y ~ g)$p.value #数值型数据用t-test(两组比较)
  } else {
    p <- chisq.test(table(y, g))$p.value #因子型数据用卡方
  }
  c("", sub("<", "&lt;", format.pval(p, digits=3, eps=0.001)))
}

设置overall=F,添加额外列extra.col即可。

table1(~ age + sex + status | ulcer,data=data, extra.col=list(`P-value`=pvalue), overall=F)

table1还是很好用的,在描述性统计上不仅减轻了工作量,而且可以做到统计和绘表的功能。需要的小伙伴赶快学习起来吧!

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值