【问题标题】:Error: Can't subset columns that don't exist [duplicate]错误:不能子集不存在的列[重复]
【发布时间】:2021-03-08 20:36:38
【问题描述】:

我正在尝试使用 1 个主体间因子和 3 个主体内因子进行混合方差分析。

我的数据如下所示:

> head(rt_dat_allconds)
# A tibble: 6 x 6
# Groups:   participant, search_difficulty, cue_validity [3]
  participant search_difficulty cue_validity cue_colour     mrt  cond
        <dbl> <fct>             <fct>        <fct>        <dbl> <dbl>
1         642 difficult         FALSE        Match (Colo… 1.08      1
2         642 difficult         FALSE        Mismatch (O… 1.00      1
3         642 difficult         TRUE         Match (Colo… 0.961     1
4         642 difficult         TRUE         Mismatch (O… 0.978     1
5         642 easy              FALSE        Match (Colo… 0.945     1
6         642 easy              FALSE        Mismatch (O… 0.885     1

我正在尝试为我的 anova 运行这些代码行:

res.aov <- anova_test(data=rt_dat_allconds, dv=mrt, wid=participant, between=cond, within=c(search_difficulty, cue_validity, cue_colour))
get_anova_table(res.aov)

但是,当我运行以“res.aov”开头的行时,出现以下错误:

“错误:不能对不存在的列进行子集化。 x participantsearch_difficultycue_validity 列不存在。"

我不确定为什么它无法识别列。我可以使用这些列名来执行各种 dplyr 函数,例如 group_by 等。

任何想法都会很棒。谢谢!

【问题讨论】:

  • 你能运行colnames(rt_dat_allconds)并在这里显示结果吗
  • > colnames(rt_dat_allconds) [1] “参与者” “search_difficulty” “cue_validity” “cue_colour” “mrt” [6] “cond”
  • 你能运行rt_dat_allconds &lt;- rt_dat_allconds %&gt;% ungroup再试一次吗?
  • 成功了!!!!非常感谢

标签: r dplyr anova


【解决方案1】:

如果您在分组 tibble 中运行 anova_test,它将尝试运行分组方差分析,该分组方差分析为数据中的每个组运行单独的方差分析。我相信那不是你想要的。让我用一个例子来说明这一点:

# Setting up
library(tidyverse)
library(rstatix)
data("ToothGrowth")
df <- ToothGrowth

这是未分组数据的方差分析

> df %>%
+   anova_test(len ~ dose)

ANOVA Table (type II tests)

  Effect DFn DFd       F        p p<.05   ges
1   dose   1  58 105.065 1.23e-14     * 0.644

这是分组数据的方差分析

> df %>%
+   group_by(supp) %>%
+   anova_test(len ~ dose)

# A tibble: 2 x 8
  supp  Effect   DFn   DFd     F        p `p<.05`   ges
* <fct> <chr>  <dbl> <dbl> <dbl>    <dbl> <chr>   <dbl>
1 OJ    dose       1    28  36.0 1.82e- 6 *       0.563
2 VC    dose       1    28 118.  1.51e-11 *       0.808

注意结果有多么不同。这是因为第二个相当于:

> df %>%
+   filter(supp == "OJ") %>%
+   anova_test(len ~ dose)
Coefficient covariances computed by hccm()
ANOVA Table (type II tests)

  Effect DFn DFd      F        p p<.05   ges
1   dose   1  28 36.013 1.82e-06     * 0.563
> df %>%
+   filter(supp == "VC") %>%
+   anova_test(len ~ dose)
Coefficient covariances computed by hccm()
ANOVA Table (type II tests)

  Effect DFn DFd       F        p p<.05   ges
1   dose   1  28 117.948 1.51e-11     * 0.808

因此,根据Ronak Shah comment on the question,避免在使用anova_test 之前对数据进行分组,除非您需要分组方差分析。

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 1970-01-01
    • 2019-06-08
    • 2019-05-08
    • 2016-06-01
    • 2017-06-18
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多