1

这真让我抓狂。我正在使用 rstatix 的 anova_test ,它告诉我我的列不存在,而它们显然存在。

这是我的数据框的样子:

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)
df <- data.frame(ID, Form, Pen, Time)

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

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

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)

我想测试主要和交互效果,所以我正在做一个 2 x 3 重复测量 ANOVA(双向 ANOVA,因为 Form 和 Pen 是两个自变量)。

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

我不断收到这个错误:

Error: Problem with `mutate()` input `data`.
x Can't subset columns that don't exist.
x Columns `ID` and `Form` don't exist.
ℹ Input `data` is `map(.data$data, .f, ...)`.

为什么?!任何帮助将不胜感激。我一直在寻找 HOURS 的解决方案,但我感到非常沮丧。

4

1 回答 1

4

感谢您在帖子中添加其他详细信息 - 根据您提供的内容,您似乎需要在将 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))

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

于 2021-02-15T23:03:13.847 回答