首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多因素t检验

多因素t检验
EN

Stack Overflow用户
提问于 2019-12-17 17:15:12
回答 1查看 70关注 0票数 1

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

代码语言:javascript
复制
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”进行比较感兴趣。

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

你能帮帮我吗?感谢您的建议

EN

回答 1

Stack Overflow用户

发布于 2019-12-17 18:04:07

您需要列表中的列在向量中:

代码语言:javascript
复制
prova<-data.frame(
Species=as.character(Species), 
Class = as.character(Class),
Treatment = as.character(Treatment),
Sample = as.character(Treatment),
values = values)

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

代码语言:javascript
复制
results = by(prova,prova$Class,function(i)t.test(values ~ Treatment,data=i))
names(results)
[1] "X" "Y" "Z"

要查看"X“的结果,请执行以下操作

代码语言:javascript
复制
results[["X"]]

如果你只想看物种"a",你可以这样做:

代码语言:javascript
复制
prova = subset(prova,Species=="a")

并重新运行上面的代码。在这里,我必须指出,您的示例数据集将无法工作,因为它具有n=1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59370959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档