r - 在 R 中对整齐数据同时执行多个方差分析

标签 r tidyverse tidyr anova simultaneous

我有一个如下所示的数据框,但有许多附加行。 “内容”和“过程”都可以是“a”或“n”。

dv1  dv2  dv3  content  process
1    3    4    a        a
2    1    2    a        n
5    3    5    n        a
4    3    2    n        n

我知道如何对以这种方式设置的数据运行多个方差分析。我将运行以下命令:

dv <- df[,1:3]
output <- lm(as.matrix(dv) ~ content * proces, data = df, 
    contrasts = list(content = contr.sum, process = contr.sum))
summary(aov(output))

我想知道是否有一种方法可以在整洁的数据帧上执行相同的操作,而无需使用 spread() 将其恢复为与上面相同的格式。我通常使用整洁的数据,而方差分析是我仍然对不整洁的数据进行的唯一分析之一。或者,如果您认为按照我一直以来的方式运行方差分析确实更好,并且我通过尝试在 tidyverse 中完成所有操作为自己创造了更多工作,请告诉我。

这就是整洁的数据框的样子:

dv   value  content  process 
dv1  1      a        a
dv1  2      a        n
dv1  5      n        a
dv1  4      n        n
dv2  3      a        a
dv2  1      a        n
dv2  3      n        a
dv2  3      n        n
dv3  4      a        a
dv3  2      a        n
dv3  5      n        a
dv3  2      n        n

最佳答案

“整洁”的方法是通过 dv 嵌套数据,然后使用 purrr::map 对嵌套数据执行方差分析.

library(tidyverse)
df.aov <- df %>%
    group_by(dv) %>%
    nest() %>%
    mutate(aov = map(data, ~aov(value ~ content * process, data = .x)))
df.aov$aov
#[[1]]
#Call:
#   aov(formula = value ~ content * process, data = .x)
#
#Terms:
#                content process content:process
#Sum of Squares        9       0               1
#Deg. of Freedom       1       1               1
#
#Estimated effects may be unbalanced
#
#[[2]]
#Call:
#   aov(formula = value ~ content * process, data = .x)
#
#Terms:
#                content process content:process
#Sum of Squares        1       1               1
#Deg. of Freedom       1       1               1
#
#Estimated effects may be unbalanced
#
#[[3]]
#Call:
#aov(formula = value ~ content * process, data = .x)
#
#Terms:
#                    content process content:process
#Sum of Squares     0.25    6.25            0.25
#Deg. of Freedom       1       1               1
#
#Estimated effects may be unbalanced

df.aov 包含两列 dataaov,其中包含 tibble< 的 list分别是/code>s 和 aovs。


示例数据

df <- read.table(text =
    "dv   value  content  process
dv1  1      a        a
dv1  2      a        n
dv1  5      n        a
dv1  4      n        n
dv2  3      a        a
dv2  1      a        n
dv2  3      n        a
dv2  3      n        n
dv3  4      a        a
dv3  2      a        n
dv3  5      n        a
dv3  2      n        n", header = T)

关于r - 在 R 中对整齐数据同时执行多个方差分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52192719/

相关文章:

r - 向可绘制的条形图添加水平线

r - 计算 data.table 中的多个列名

r - faced_grid 和 ggplot 中 y 轴标签的对齐方式?

r - 如何整齐地组合稀疏列

R 函数重新编码值或类似的(如 SPSS)

r - 如何标记R中特定行周围的任何值范围?

r - tidyR 从长到宽的数据?

r - 提取大写行并向下填充直到下一个大写行

r - 如何在 R 中并行合并两个列表?

r - 如何在复杂数据的情况下分离行