【发布时间】:2013-08-19 16:28:53
【问题描述】:
我正在尝试在tapply() 行中使用aov() 函数,但不确定它是否不可能,或者我只是编码不正确。
Factors<-c("Factor 1", "Factor 2")
Years<-c("Year 1", "Year 2", "Year 3","Year 4", "Year 5")
width<-rnorm(100)
height<-rnorm(100)
mydata<-data.frame(Years,Factors,width,height)
我想看看每年的因子水平之间是否存在差异。请注意,我的真实数据有几个因子水平,这就是我使用 ANOVA 而不是 t 检验的原因。
我可以让tapply() 执行“简单”功能,例如sum:
with(mydata,tapply(width,Factors,FUN="sum"))
从简单的例子来看,我认为tapply() 的工作方式基本上是通过第二个条目Factors 对数据进行子集化,然后取第一个条目width,并将其放入任何声明的函数中.根据这个推理,我尝试了:
with(mydata,tapply(width~Factors,Years,FUN="aov"))
这会返回错误arguments must have the same length。
如果可以将tapply 与需要复杂输入的功能一起使用,我该怎么做?我预计如何存储此类输出会出现问题。例如,如果我保存了 2 个 anova,我想将它们保存为单个“变量名”。
width.anova<-with(mydata,aov(width~Factors))
height.anova<-with(mydata,aov(height~Factors))
all.anovas<-c(width.anova, height.anova)
我希望能够做的事情类似于(*以下代码不起作用,只是为了显示我的意思):
#all.anovas$width.anova
显然c() 函数不起作用。我知道为了能够使用$ 语法,我应该使用数据框,但以下方法不起作用:
all.anovas<-data.frame(width.anova, height.anova)
如果有更简单的方法来获得我正在寻找的结果,非常感谢任何关于如何操作的提示。同样,我希望进行 5 次方差分析 - 比较 5 年中每一年的因子水平 1 和 2 之间的差异。实际上,我的数据有 8 年和 5 个因子水平。我还将对几个变量(如宽度和高度)进行这些方差分析。
【问题讨论】: