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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容