方差分析 (rstatix) 中“mutate()”输入“数据”的问题

use*_*497 2 statistics r anova rstatix

这真让我抓狂。我正在使用anova_testfrom rstatix,它告诉我,当我的列明显存在时,它们不存在。

\n

这就是我的数据框的样子:

\n
ID = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3) \nForm = c("A", "A", "A", "B", "B", "B", "A", "A", "A", "B", "B", "B", "A", "A", "A", "B", "B", "B")\nPen = c("Red", "Blue", "Green", "Red", "Blue", "Green", "Red", "Blue", "Green","Red", "Blue", "Green","Red", "Blue", "Green","Red", "Blue", "Green")\nTime = c(20, 4, 6, 2, 76, 3, 86, 35, 74, 94, 14, 35, 63, 12, 15, 73, 87, 33)\ndf <- data.frame(ID, Form, Pen, Time)\n
Run Code Online (Sandbox Code Playgroud)\n

ID、Form 和 Pen 是因子,而 Time 是数字。因此,每个受试者都用红、蓝、绿笔完成表格 A 和 B,我测量了每个受试者完成表格所需的时间。

\n

这是我故意提出的一个假数据集来问这个问题。实际上,该数据框源自具有更多变量的更大数据集。每个变量都有更多的观察结果(因此,不仅仅是主题 1 和表格 A 和红笔的一个数据点,如本例所示,而是多个),因此我对它们进行了总结以获得平均时间。

\n
df <- original.df %>% dplyr::select(ID, Form, Pen, Time)\ndf <- df %>% dplyr::group_by(ID, Form, Pen) %>% dplyr::summarise(Time = mean(Time))\ndf <- df %>% convert_as_factor(ID, Form, Pen)\ndf$Time <- as.numeric(df$Time)\n
Run Code Online (Sandbox Code Playgroud)\n

我想测试主效应和交互效应,所以我正在做 2 x 3 重复测量方差分析(双向方差分析,因为 Form 和 Pen 是两个自变量)。

\n
aov <- rstatix::anova_test(data = df, dv = Time, wid = ID, within = c(Form, Pen))\n
Run Code Online (Sandbox Code Playgroud)\n

我不断收到此错误:

\n
Error: Problem with `mutate()` input `data`.\nx Can't subset columns that don't exist.\nx Columns `ID` and `Form` don't exist.\n\xe2\x84\xb9 Input `data` is `map(.data$data, .f, ...)`.\n
Run Code Online (Sandbox Code Playgroud)\n

为什么?!任何帮助将不胜感激。我已经花了几个小时寻找解决方案,但我感到非常沮丧。

\n

jar*_*rot 7

感谢您在帖子中添加额外的详细信息 - 根据您提供的内容,您似乎需要在将 df 传递给之前取消分组anova_test(),例如

#install.packages("rstatix")
library(rstatix)
library(tidyverse)

ID = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3) 
Form = c("A", "A", "A", "B", "B", "B", "A", "A", "A", "B", "B", "B", "A", "A", "A", "B", "B", "B")
Pen = c("Red", "Blue", "Green", "Red", "Blue", "Green", "Red", "Blue", "Green","Red", "Blue", "Green","Red", "Blue", "Green","Red", "Blue", "Green")
Time = c(20, 4, 6, 2, 76, 3, 86, 35, 74, 94, 14, 35, 63, 12, 15, 73, 87, 33)
original.df <- data.frame(ID, Form, Pen, Time)

df <- original.df %>%
  dplyr::select(ID, Form, Pen, Time)
df <- df %>%
  dplyr::group_by(ID, Form, Pen) %>%
  dplyr::summarise(Time = mean(Time))
df <- df %>%
  convert_as_factor(ID, Form, Pen)
df$Time <- as.numeric(df$Time)
df <- ungroup(df)

aov <- rstatix::anova_test(data = df, dv = Time, wid = ID, within = c(Form, Pen))
Run Code Online (Sandbox Code Playgroud)

您可以查看数据帧是否使用 进行分组str(),例如str(df)before 和 afterungrouped()向您显示差异。如果进行此更改后仍然出现错误,请告诉我