使用虚拟数据集:
Species Var1 Var2 Var3
a 1 2 3
a 4 5 6
b 7 8 9
b 10 11 12
我有多个物种和大约50个变量(Var50)。我想在每个响应变量的配对分组变量(Species)上执行单向Anova,并获得在95%CI时具有统计显着性的频率输出。我开始编写一个函数,如下所示:
data<-read.table("example.txt", header=T, sep="\t")
function(y){
for(y in 2:50)
anova.r<-aov(y~Species, data = data)
result<-TukeyHSD(anova.r, conf.level = 0.95)
f.result ## I cannot figure out how to extract the "p adj" from the results
f.result<-sum(prob.result>=0.05)
write.table(f.result, file = "anova95.csv", sep = ",",
col.names = FALSE, append=TRUE)
}
最终,我希望决赛桌(虚拟答案)看起来像
Var1 Var2 Var3......Var50
Frequency at 95% CI 106 200 45 246
我知道我可以使用[[]]
来访问Tukey测试结果中的数据。我尝试使用tukey.results[[1]][,1]
最多tukey.results[[1]][,3]
无效。 tukey.results[[1]]
返回Tukey测试中的所有列。
另外,我想我可能必须在函数中的某处使用cbind
来获取各自列中的数据。或者我认为可以使用apply
命令,但我不知道如何在每次迭代时改变响应变量时保持分组变量不变。
任何建议都将深表感谢。
答案 0 :(得分:2)
如果您还在寻找变量,请尝试此操作:
summary(fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))
kk<-TukeyHSD(fm1, "tension", ordered = TRUE)
kk$tension
result<-data.frame( kk$tension)
result["p.adj"]
p.adj
M-H 0.447421021
L-H 0.001121788
L-M 0.033626219
答案 1 :(得分:2)
答案对我的系统无效。这是我的解决方案,从提供的代码Metrics开始。
summary(fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))
kk<-TukeyHSD(fm1, "tension", ordered = TRUE)
kk<-kk$tension #strips off some headers in kk
kk<-as.data.frame(kk) #converts to data frame
kk<-kk$'p adj' #selects relevant output
print(kk) #to check answer