如何在数据帧列表上执行多个ANOVA´s
和Post-Hoc-Tests
?假设我有这种类型的数据结构:
set.seed(2)
df1 <- data.frame(Number = c("No1", "No2", "No3", "No1", "No2", "No3", "No1", "No2", "No3" ),
value = sample(1:200, 9))
df2 <- data.frame(Number = c("No4", "No5", "No6", "No4", "No5", "No6", "No4", "No5", "No6" ),
value = sample(1:200, 9))
df3 <- data.frame(Number = c("No7", "No8", "No9", "No7", "No8", "No9", "No7", "No8", "No9" ),
value = sample(1:200, 9))
df <- list(df1 = df1,df2 = df2,df3 = df3)
使用一个df,我可以执行方差分析,也可以执行agricolae
包中的HSD.test
library(agricolae)
ANOVA <- aov(value ~ Number, data = df1)
HSD_Test <- agricolae::HSD.test(y = ANOVA,
trt = "Number",
group = TRUE,
console = TRUE,
alpha = 0.3)
graphics::plot(HSD_Test)
但是我如何在列表中使用多个df '呢?理想情况下,我希望将分组变量(a,b,c等)存储在数据框架中的新列中,如下所示:
> df1
Number value Group
1 No1 33 a
2 No2 18 a
3 No3 8 b
4 No1 164 a
5 No2 94 a
6 No3 37 b
7 No1 149 a
8 No2 118 a
9 No3 71 b
I donot我想把df组合成一个大df,然后运行方差分析。
这样的事情应该会让你继续前进:
set.seed(2)
df1 <- data.frame(Number = c("No1", "No2", "No3", "No1", "No2", "No3", "No1", "No2", "No3" ),
value = sample(1:200, 9))
df2 <- data.frame(Number = c("No4", "No5", "No6", "No4", "No5", "No6", "No4", "No5", "No6" ),
value = sample(1:200, 9))
df3 <- data.frame(Number = c("No7", "No8", "No9", "No7", "No8", "No9", "No7", "No8", "No9" ),
value = sample(1:200, 9))
df <- list(df1 = df1,df2 = df2,df3 = df3)
ex <- lapply(df,function(x) aov(value ~ Number, data = x))