【问题标题】:One way ANOVA for every column每列的单向方差分析
【发布时间】:2017-12-03 19:13:15
【问题描述】:

我需要基于另一列对数据框中的每一列运行单向方差分析。我的数据框有 57 列,因此输入每个列名非常耗时。这是我的数据框的一部分。

所以基本上,我需要为每一列运行这个函数

aov(df$PGY_16 ~ df$Total_Time_cm_16, df)

所以我需要一个循环来为我的数据框中的每一列运行它。

任何帮助将不胜感激!

【问题讨论】:

  • 一个简单的lapply 应该可以。

标签: r loops anova


【解决方案1】:

为了重现性,下面的代码使用内置的mtcars 数据框并返回一个列表,其中每个列表元素都是mtcars$cylaov 模型,以及数据框中的所有其他列。我们使用来自purrr 包(它是tidyverse 包套件的一部分)中的map 来处理在数据框的每一列上连续运行aov

library(tidyverse)

aov.models = mtcars[ , -grep("cyl", names(mtcars))] %>%
  map(~ aov(mtcars$cyl ~ .x))

对于您的数据,类似的代码是:

aov.models = df[ , -grep("PGY_16", names(df))] %>%
  map(~ aov(df$PGY_16 ~ .x))

【讨论】:

    【解决方案2】:

    无需安装tidyverse 包即可。 这是mtcars 数据框的示例。

    aov.models <- lapply(setdiff(names(mtcars), "cyl"), function(s) {
      aov(as.formula(paste(s, " ~ cyl")),mtcars)
    })
    

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 2011-02-25
      • 2020-07-21
      • 1970-01-01
      • 2013-04-03
      • 2019-09-08
      相关资源
      最近更新 更多