我的数据如下:
Sample Replication Days
1 1 10
1 1 14
1 1 13
2 1 NA
2 1 5
2 1 18
1 2 16
1 2 NA
1 2 18
2 2 15
2 2 7
2 2 12
我想为复制中的Samples平均值添加一列。我想保留复制作为因素,以查看是否由于复制而产生任何影响。例如,分别用于复制1的样本1的平均值和用于复制2的样本1的平均值。然后我想使用该列用于ANOVA:
sample_aov <- aov(Sample~Days, na.rm=TRUE)
我尝试使用聚合,但我认为我做错了。我将不胜感激。谢谢!
答案 0 :(得分:1)
使用tidyverse
,您可以按以下方式处理数据框:
library(tidyverse)
df = data.frame(Sample = c(rep(1,3), rep(2,3),rep(1,3), rep(2,3)),
Replication = c(rep(1,6), rep(2,6)),
Days = c(10,14,13,NA,5,18,16,NA,18,15,7,12))
df <- df %>% group_by(Sample, Replication) %>% summarise(Mean = mean(Days, na.rm = TRUE))
您将获得以下数据框:
> df
# A tibble: 4 x 3
# Groups: Sample [2]
Sample Replication Mean
<dbl> <dbl> <dbl>
1 1 1 12.3
2 1 2 17
3 2 1 11.5
4 2 2 11.3
现在您可以通过执行以下操作对此数据帧进行anova
测试:
> aov(Mean ~ Sample, data = d)
Call:
aov(formula = Mean ~ Sample, data = d)
Terms:
Sample Residuals
Sum of Squares 10.56250 10.90278
Deg. of Freedom 1 2
Residual standard error: 2.334821
Estimated effects may be unbalanced
由于只有两个组要比较,因此t-test
更合适:
> t.test(Mean ~ Sample, data = df)
Welch Two Sample t-test
data: Mean by Sample
t = 1.392, df = 1.0026, p-value = 0.3962
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-26.23892 32.73892
sample estimates:
mean in group 1 mean in group 2
14.66667 11.41667
是您要找的东西吗?
答案 1 :(得分:1)
让我们使用您的原始建议来使用aggregate
。我们将致电您的data.frame
df
。注意您的分组变量是sample
和repl
的使用:
> val <- aggregate(.~sample+repl, df, FUN=mean)
> val
sample repl days
1 1 12.33333
2 1 11.50000
1 2 17.00000
2 2 11.33333
您准备好进行方差分析。