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

2022-02-11  本文已影响0人  KS科研分享与服务

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

上一篇 下一篇

猜你喜欢

热点阅读