R语言:三线表(2)

系列文章目录

一、连续变量根据是否正态选择性输出mean(±sd)和median(min,max)形式



前言

这一部分添加P值,其实如果更改函数有多种方法,这里为求简单引用其他文章的使用方法。这里只简单地添加t检验,方差分析、秩和检验和卡方检验的p值。
同样,先看一下效果

  代码较长,一般情况下不用自己修改前面的函数,只需修改自己的数据即可。

处理前: (未经任何修改)
增加前
处理后:
增加后


一、适用情况

  根据数据类型,样本是否正态和方差齐性以及样本量的多少确定检验方法。(统计检验方法有问题的话,请批评指正)

1.数值变量

  1)正态且方差齐,两个样本t检验,多个样本方差分析。

  2)非正态或方差不齐,秩和检验

2.分类变量: 卡方检验

暂时没有考虑结局变量是等级资料的情况。

二、添加列

1.举个例子

  下面举个例子,x为函数传进来的数据x是一个列表,每一个分类(表的顶部分类变量),对应x列表一个元素,而每个元素下面就是a数据中所有的生存状态数据(以生存状态为例)。换句话说,x是个列表,x[[1]]是所有男性的生存状态数据,x[[2]]是所有女性生存状态数据。
  先生成一般的三线表吧。这一部分是接着上一篇教程讲的,有疑惑的翻阅上一篇,或者留言即可。

rm(list = ls())
options(stringsAsFactors = F)
if (!require(table1)) {
   
  install.packages("table1")
}
library(survival)
library(car)
library(table1)

#改写赋给table1中render参数的函数
rd <- function(x, name, ...){
   
  y <- a[[name]]
  m = any(is.na(y))
  if (is.numeric(y)) {
   
    normt=(shapiro.test(y)$p.value>0.1)+2
    my.render.cont(x,n=normt,m=m,...)
  }else{
   
    render.default(x=x, name=name, ...)
  }
}
#改写赋给table1中render.continuous参数的函数
my.render.cont <- function (x,n,m, ...) {
   
  
  a=with(stats.apply.rounding(stats.default(x, ...), ...), c("", 
                                                             `Mean (±SD)` = sprintf("%s (±%s)", MEAN, SD),
                                                             `Median (Min, Max)` = sprintf("%s (%s, %s)", MEDIAN, MIN, MAX)
  ))[-n]
  if (m) {
   
    a <- c(a,with(stats.apply.rounding(stats.default(is.na(x), ...), ...)$Yes,
                  c(`Missing` = sprintf("%s (%s%%)", FREQ, PCT))))
  }
  a
}

a <- lung
#新增两个数据
a$norm <- rnorm(nrow(a),10,1)
a$exp <- rexp(nrow(a))
#分类变量请设置因子、以年龄、性别、体重减低、状态为例子
a$sex <- factor(a$sex,levels = c(1,2),labels = c('男','女'))
a$status <- factor(a$status,levels = c(1,2),labels = c("存活","死亡"))

#设置单位
units(a$age) <- 'year'
units(a$wt.loss) <- 'Kg'
#设置标签
label(a$norm) <- "正态分布数据"
label(a$exp) <- "指数分布数据"
label(a$status) <- "生存状态"
label(</
  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口吃两口饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值