首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANOVA中'mutate()‘输入'data’的问题(rstatix)

ANOVA中'mutate()‘输入'data’的问题(rstatix)
EN

Stack Overflow用户
提问于 2021-02-16 06:33:23
回答 1查看 1.6K关注 0票数 1

我都快疯了。我正在使用rstatix中的anova_test,它告诉我,我的列并不在那里,而它们显然在那里。

这是我的数据帧的样子:

代码语言:javascript
复制
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是因子,时间是数字。因此,每个受试者分别用红、蓝、绿笔填写表格A和B,然后我测量了每个人完成表格所需的时间。

这是一个假的数据集,我特意提出了这个问题。实际上,此数据帧是从包含更多变量的较大数据集派生而来的。每个变量都有更多的观察值(因此,对于subject 1& Form A& Red Pen,不只是一个数据点,就像本例中那样,而是多个数据点),所以我汇总得到了平均时间。

代码语言:javascript
复制
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乘3的重复测量方差分析(双向方差分析,因为Form和Pen是两个独立变量)。

代码语言:javascript
复制
aov <- rstatix::anova_test(data = df, dv = Time, wid = ID, within = c(Form, Pen))

我一直收到这个错误:

代码语言:javascript
复制
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, ...)`.

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 07:03:14

感谢您将更多细节添加到帖子中-根据您提供的内容,在将其传递给anova_test()之前,您似乎需要对df进行解组。

代码语言:javascript
复制
#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()对数据帧进行了分组,例如,ungrouped()之前和之后的str(df)将向您显示差异。如果您在进行此更改后仍出现错误,请让我知道

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66216247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档