通过多个因素进行T检验

问题描述 投票:1回答:1

我有一个数据框,其中有一个单变量和多因子列。看起来像这样

Species<-list("a","b")
Species<-rep(Species,times=6)
Class<-list("X","X","Y","Y","Z","Z")
Class<-rep(Class,times=2)
Sample<-list("1","1","1","1","1","1","2","2","2","2","2","2")
Treatment<-list("A","A","A","A","A","A","B","B","B","B","B","B")
values<-c(15,16,17,18,19,20,5,6,7,8,9,10)

prova<-as.data.frame(cbind(Species, Class,Treatment,Sample,values))

我想进行一系列的t检验,以比较每个类别在两种处理中观察到的每种物种的值。因此,我对两种处理方法之间的差异很感兴趣,但是如果我应用代码t.test(values〜Treatment,data = prova,method =“ t.test”),它将计算差异而与其他因素无关,这不是我在寻找什么。此外,我只想比较两种处理中“ X”类中的“ a”物种。

在原始数据集中,每种处理我有三个重复。

您能帮我吗?谢谢您的任何建议

r dataframe factors t-test
1个回答
0
投票

您需要列表中的列成为矢量:

prova<-data.frame(
Species=as.character(Species), 
Class = as.character(Class),
Treatment = as.character(Treatment),
Sample = as.character(Treatment),
values = values)

或者如果可能,以Species,Class等作为字符向量开始。现在,您可以使用by,它根据Class拆分data.frame并执行t.test,就像您尝试做的那样:

results = by(prova,prova$Class,function(i)t.test(values ~ Treatment,data=i))
names(results)
[1] "X" "Y" "Z"

要查看“ X”的结果,请执行

results[["X"]]
© www.soinside.com 2019 - 2024. All rights reserved.