R语言快速生成三线表(1)

news/2024/11/7 9:59:17/

R语言的优势在于批量处理,常使用到循环和函数,三线表是科研文章中必备的内容。利用函数实现自动判断数据类型和计算。使用R包(table1)。

# 创建连续性变量
continuous_var1 <- c(1.2, 2.5, 3.7, 4.8, 5.9)
continuous_var2 <- c(10.5, 20.3, 15.2, 8.7, 12.1)
continuous_var3 <- c(0.3, 0.7, 1.1, 2.0, 1.5)# 创建分类变量
category_var1 <- factor(c("A", "B", "A", "C", "B"))
category_var2 <- factor(c("X", "Y", "Z", "X", "Z"))
category_var3 <- factor(c("High", "Low", "Medium", "Medium", "High"))# 创建data.frame
df <- data.frame(ContinuousVar1 = continuous_var1,ContinuousVar2 = continuous_var2,ContinuousVar3 = continuous_var3,CategoryVar1 = category_var1,CategoryVar2 = category_var2,CategoryVar3 = category_var3
)# 显示data.frame
df
#generate three line table
#pvalue
pvalue <- function(x, name, ...){y <- df[[name]]#variableg <- df[,"Group"]#Groupif (is.numeric(y)) {if (shapiro.test(y)$p.value>0.05){p <- t.test(y ~ g)$p.valuep_with_symbol <- paste0(format.pval(p, digits = 3, eps = 0.001), "*")}else{p <- wilcox.test(y ~ g)$p.valuep_with_symbol <- paste0(format.pval(p, digits = 3, eps = 0.001), "**")}}else{if (length(y) > 40 & any(sapply(chisq.test(y,g)$expected, function(x) x >=1))){p <- chisq.test(y, g)$p.valuep_with_symbol <- paste0(format.pval(p, digits = 3, eps = 0.001,trim = FALSE), "#")} else {p<-fisher.test(y,g)$p.valuep_with_symbol <- paste0(format.pval(p, digits = 3, eps = 0.001), "##")}}c("",  p_with_symbol)
}#自定义函数准备显示统计值(t值或卡方值)
stat_value <- function(x, name, ...) {y <- df[[name]] # 变量g <- df[,"Group"] # 分组变量if (is.numeric(y)) {# 连续变量使用 t 检验或 Mann-Whitney U 测试if (shapiro.test(y)$p.value > 0.05) {s <- abs(t.test(y ~ g)$statistic[["t"]]) # 正态分布,使用 t 检验} else {s <- wilcox.test(y ~ g)[["statistic"]][["W"]] # 非正态分布,使用 Mann-Whitney U 测试}} else {if(length(y) > 40 & any(sapply(chisq.test(y,g)$expected, function(x) x >=1))){s<-chisq.test(y, g)$statistic[["X-squared"]]} else {s<-fisher.test(y, g)$statistic[["X-squared"]]}# 分类变量使用卡方检验s <- chisq.test(y, g)$statistic[["X-squared"]]}c("",  format.pval(s, digits=3, eps=0.001))
}
#定义变量的展现形式
# rndr <- function(x, name, ...) {
#   if (!is.numeric(x)) return(render.categorical.default(x))
#   what <- switch(name,
#                  Age = "Median [Min, Max]",
#                  `Survival months` = "Median [Min, Max]"
#   )
#   parse.abbrev.render.code(c("", what))(x)
# }
#绘图
library(table1)
paste(sprintf("`%s`",colnames(df)),collapse="+")
df$Group<-c(rep("A",2),rep("B",3))
table<-table1(~`ContinuousVar1`+`ContinuousVar2`+`ContinuousVar3`+`CategoryVar1`+`CategoryVar2`+`CategoryVar3`|Group,ender=rndr,data=df,extra.col=list(`Statistics`=stat_value,`P-value`=pvalue))

#保存为docx
library(flextable);help(package="flextable")
table_fl<-t1flex(table)
save_as_docx(table_fl,path="table.docx")


http://www.ppmy.cn/news/1059882.html

相关文章

基于spring boot校园疫情信息管理系统/疫情管理系统

摘要 随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高&#xff0c;校园疫情信息管理系统给学校带来了更大的帮助。 由于当前疫情防控形势复杂&#xff…

解锁未来网络新奇体验:探索算力网络的边缘创新

在当今数字时代&#xff0c;我们正处于网络变革的前沿&#xff0c;而算力网络正是这场变革的引领者之一。随着5G时代的到来&#xff0c;算力网络以其创新性和前瞻性&#xff0c;正在重新定义我们对网络构架的认知。让我们一起深入探索&#xff0c;了解算力网络如何为未来网络构…

Windows Server服务器安全加固基线配置

一、账户管理、认证授权 一、账户 1、管理缺省账户 安全基线项说明:对于管理员账号,要求更改缺省账户名称;禁用Guest(来宾)账户。 操作步骤:进入控制面板-->管理工具-->计算机管理,在系统工具-->本地用户和组:缺省账户Administrator-->右键重命名为JFadmin;…

mysql insert出现主键冲突错误的解决方法

mysql insert出现主键冲突错误的解决方法 insert 时防止出现主键冲突错误的方法 在mysql中插入数据的时候常常因为主键存在而冲突报错&#xff0c;下面有两个解决方法&#xff1a; 1 在insert 语句中添加ignore 关键字 insert ignore into table (id,name) values (1,username)…

懵了,面试官问我Redis怎么测,我哪知道!

有些测试朋友来问我&#xff0c;redis要怎么测试&#xff1f;首先我们需要知道&#xff0c;redis是什么&#xff1f;它能做什么&#xff1f; redis是一个key-value类型的高速存储数据库。 redis常被用做&#xff1a;缓存、队列、发布订阅等。 所以&#xff0c;“redis要怎么测…

https 的ssl证书过期处理解决方案(lighthttpd)

更换证书&#xff1a;lighthttpd 配置文件位置&#xff1a;/opt/vmware/etc/lighttpd/lighttpd.conf &#xff08;配置文件的最底部 G快速来到底部&#xff09; 方案一&#xff1a;阿里云申请免费的证书 这里公司内网环境没有配置域名&#xff0c;可以创建一个临时域名&…

工厂智能软件介绍——OA

OA系统是一种基于计算机网络的办公自动化系统&#xff0c;它的全称是Office Automation System。它是一种将传统办公流程自动化、数字化、高效化的系统。 含义 OA系统作为一种基于计算机和网络的办公自动化解决方案&#xff0c;旨在提高组织内部的协同工作和信息共享效率。该系…

数据降维 | MATLAB实现T-SNE降维特征可视化

数据降维 | MATLAB实现T-SNE降维特征可视化 目录 数据降维 | MATLAB实现T-SNE降维特征可视化降维效果基本描述程序设计参考资料 降维效果 基本描述 T-SNE降维特征可视化&#xff0c;MATLAB程序。 T-分布随机邻域嵌入&#xff0c;主要用途是对高维数据进行降维并进行可视化&…