0

我有一个数据表,其中包含评估 2 个因素的实验结果:LightDay_light2 个不同的温度下(Temperature)。

Temperature我使用该rstatix软件包对每个进行了 2 路方差分析。

2-way ANOVA 的结果显示为一个数据表,其中有一列称为SSn。我想将每个值除以每个值的所有值SSn的总和。为此,我使用了与包使用的方法类似的方法,但没有成功。下面,我展示了我使用的代码以及我想要完成的简短图形说明。SSnTemperaturerstatix

library(rstatix)

# Data frame
Temperature <- factor(c(rep("cold", times = 8),
                        rep("hot", times = 8)),
                      levels = c("cold", "hot"))

Light <- factor(rep(c(rep("blue", times = 4),
                      rep("yellow", times = 4)),
                    times = 2),
                levels = c("blue", "yellow"))

Day_light <- factor(rep(c(rep("Day", times = 2),
                          rep("Night", times = 2)),
                        times = 4),
                    levels = c("Day", "Night"))

Result <- c(90.40, 85.20, 21.70, 25.30,
            75.12, 77.36, 6.11, 10.8
            85.14, 88.96, 30.21, 35.15)

Data <- data.frame(Temperature, Light, Day_light, Result)

# ANOVA
ANOVA <- Data %>%
  group_by(Temperature) %>%
  anova_test(Result ~ Light * Day_light,
             detailed = TRUE)
ANOVA

# Calculations within the ANOVA data frame (not running)
Calculations <- ANOVA %>%
  group_by(Temperature) %>%
  ANOVA$SSn/sum(ANOVA$SSn)*100
Calculations

> ANOVA
# A tibble: 6 x 10
  Temperature Effect              SSn   SSd   DFn   DFd        F          p `p<.05`   ges
* <fct>       <chr>             <dbl> <dbl> <dbl> <dbl>    <dbl>      <dbl> <chr>   <dbl>
1 cold        Light            354.    33.5     1     4   42.2   0.003      "*"     0.914
2 cold        Day_light       8723.    33.5     1     4 1041.    0.0000055  "*"     0.996
3 cold        Light:Day_light    6.07  33.5     1     4    0.725 0.442      ""      0.153
4 hot         Light            773.    23.1     1     4  134.    0.000318   "*"     0.971
5 hot         Day_light       5014.    23.1     1     4  869.    0.00000788 "*"     0.995
6 hot         Light:Day_light   37.0   23.1     1     4    6.41  0.065      ""      0.616

我已经部分解决了,但我仍然不知道如何将计算分开Temperature

ANOVA$Calculations <- ANOVA$SSn/sum(ANOVA$SSn)*100

我的问题的图形表示

在此处输入图像描述

然后...

在此处输入图像描述

4

1 回答 1

1

我个人倾向于坚持使用 data.table,因为它有一些不错的好处,并且涉及到相当长的学习曲线。

还展示了传统的 plyr 方式:


library(data.table)

ANOVA <- as.data.table(ANOVA)
ANOVA[, Calculations := SSn / sum(SSn) , by=Temperature ]
ANOVA

## and the plyr way:

ANOVA %>% group_by( Temperature ) %>%
    mutate( Calculations = SSn / sum(SSn) )

于 2021-03-19T12:02:53.533 回答