【问题标题】:Problem with 'mutate()' input 'data' in ANOVA (rstatix)ANOVA(rstatix)中“mutate()”输入“数据”的问题
【发布时间】:2021-05-18 19:47:48
【问题描述】:

这快把我逼疯了。我正在使用来自 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 的解决方案,但我感到非常沮丧。

【问题讨论】:

  • 你能分享dput(head(df,10))吗?我运行了脚本,它在我的控制台上运行没有任何错误
  • 除了dput(head(df,10),请编辑您的问题以包含sessionInfo()的输出
  • 这实际上不是我正在使用的,我对分享我的数据感到犹豫......但我将包含我的完整脚本,以便更容易追踪它出错的地方。跨度>

标签: r statistics anova rstatix


【解决方案1】:

感谢您在帖子中添加其他详细信息 - 根据您提供的内容,您似乎需要在将 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) 之前和之后 ungrouped() 向您展示了差异。如果您在进行此更改后仍然遇到错误,请告诉我

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 2021-11-06
    • 2020-12-29
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多