教你一步得到t检验结果的三线表家政服务13825404095

文章正文
发布时间:2025-08-30 16:05


最近很多小伙伴们毕业,家政服务13825404095你的毕业论文修改了几次呢?大家可能都不一样,可能有人修改了十几版,有人二十几版,如果你修改次数是一位数,你应该是一位幸运儿了。每次修改的原因各不相同,但涉及到数据的变动是最苦恼的了,即使是增删一个病例的信息,几乎所有数据都要重新计算,结果都得重新改,改到最后想死的心都有了。小编也是痛大家这所痛,在我科室另外一位朱小编的帮助下,实现了一步实现t检验并输出到三线表中。当然我们需要R软件,没有接触过R软件的也没有关系,按下面的操作步骤也能轻松实现。


首先做一下准备工作,从R()官网下载R软件,安装很简单,双击程序按默认的参数安装即可。然后打开R软件,安装三个软件包:foreign、dplyr、ReporteRs。安装方法是运行下面三行程序:

installed.packages("foreign")

installed.packages("dplyr")

installed.packages("ReporteRs")

确认安装成功后,运行下面程序,不需要改任何参数,直接运行即可:(下面程序是建立一个函数)

rm(list=ls())
table_ttest=function(data=NULL,testvar=NULL,groupvar=NULL,groupcode=c(1,2),digits=2){
library(dplyr)
library(ReporteRs)
var=testvar;
tabledata=as.data.frame(var);
 
attach(data)
for(j in 1:length(testvar)) {
  for (i in1:(as.numeric(length(names(data))))){
  
  if (names(data)[i]==testvar[j])ntest=as.numeric(i);
  if (names(data)[i]==groupvar)ngroup=as.numeric(i);
  }
 
 
mean_g1=mean(data[,ntest][data[,ngroup]== groupcode[1]])
sd_g1=sd(data[,ntest][data[,ngroup]== groupcode[1]])
tabledata$n1[j]=as.numeric(table(data[,ngroup][data[,ngroup]== groupcode[1]]))
tabledata$group1[j]=paste(round(mean_g1,digits=digits),"±",round(sd_g1,digits=digits),sep="");
mean_g2=mean(data[,ntest][data[,ngroup]== groupcode[2]])
sd_g2=sd(data[,ntest][data[,ngroup]== groupcode[2]])
tabledata$n2[j]=as.numeric(table(data[,ngroup][data[,ngroup]== groupcode[2]]))
tabledata$group2[j]=paste(round(mean_g2,digits=digits),"±",round(sd_g2,digits=digits),sep="");
 
ttestout=with(data,t.test(data[,ntest][data[,ngroup] == groupcode[1]], data[,ntest][data[,ngroup]== groupcode[2]],var.equal=T))
tabledata$tvalue[j]=round(as.numeric(ttestout$statistic),digits=3)
tabledata$pvalue[j]=round(ttestout$p.value,digits=3)
if(tabledata$pvalue[j]==0)tabledata$pvalue[j]="<0.001";
hov=var.test(data[,ntest][data[,ngroup]== groupcode[1]], data[,ntest][data[,ngroup] == groupcode[2]])
tabledata$Fvalue[j]=round(as.numeric(hov$statistic),digits=3)
tabledata$Fpvalue[j]=round(as.numeric(hov$p.value),digits=3)
  if (tabledata$Fpvalue[j]<0.1){
  ttestout=with(data,t.test(data[,ntest][data[,ngroup] == groupcode[1]], data[,ntest][data[,ngroup]== groupcode[2]]))
 tabledata$tvalue[j]=round(as.numeric(ttestout$statistic),digits=3)
 tabledata$pvalue[j]=round(ttestout$p.value,digits=3)
  if(tabledata$pvalue[j]==0)tabledata$pvalue[j]="<0.001";
  }
}
detach(data)
ttesttable<- docx()
 
tabledata%>% vanilla.table %>% setZebraStyle(., odd = '#eeeeee', even = 'white' )%>% addFlexTable(ttesttable,.) %>% writeDoc(.,'D:/ttesttable.docx')

}


准备工作完毕,下面正式开始实现我们的目标,修改下面三行程序参数(标黄色)并运行即可:

library(foreign)

mydata=read.spss("D:/datai.sav")

table_ttest(data=mydata,testvar=c('age','thickness'),groupvar="sex",groupcode=c(1,0),digits=2)


(注:D:/datai.sav为数据存放的路径,替换为你的数据存放路径,注意路径连接符为左斜线/;'age','thickness'为两个检验变量,可以替换为你要分析的参数,可以只有一个检验变量,也可以多个,多个变量分别加引号并用逗号隔开;"sex"为分组变量,请替换之;1,0为t检验中两组的代码,也可以为1,2,也可以为文字或英文字符,如”F”,”M”,文字或英文字符加引号并用逗号隔开;digits=2中为结果中均值和标准差的小数位数,可以为0以上的正整数,本例子中保留两位小数。)


运行之后,在D盘根目录下生成“ttesttable.docx”word文档,打开后内容如下:


三线表已经做成了,表中的t值和p值即t检验或t’检验的结果,程序已经根据方差齐性检验的结果自动为您选择相应的结果。上表相比传统的三线表内容,还多了四个变量:n1为第一组的样本量,n2为第二组的样本量,Fvalue为方差齐性检验的F值,Fpvalue为方差齐性检验的p值。这四个变量供大家查看参考,在实际应用中可能不需要,直接删除这四列即可。如下:

到此已经圆满完成任务,如果还有问题,可以向小编咨询哦。另外我们也有志于把其它检验也编写成函数,希望有兴趣的亲们加入我们一起努力,让数据处理变得简单。