【问题标题】:2-Way Anova Loop & Export to CSV or Excel Table2-Way Anova Loop & 导出到 CSV 或 Excel 表
【发布时间】:2021-07-04 23:11:36
【问题描述】:

我已经知道如何在我的数据框中的几个变量上运行 2-way anova,但不知道如何将其转换为可以轻松导出到 csv 文件或 excel 的格式。理想情况下,我希望它具有这样的格式,其中我的数百个因变量中的每一个都在它自己的行中,带有 pVaules 和 Fvalues

我使用 Titanic 数据集做了一个示例。在这种情况下,我将 Sex & Embarked 设置为我的分类变量,并希望将 Sex Embarked 和 ~Interaction 效果的输出以某种方式保存到文件中。我愿意接受有关如何输出的建议——只是希望能够轻松识别哪些值是重要的,理想情况下每个因变量都在自己的行上。

library(titanic)
library(tidyverse)

df1 <- 
  titanic_train %>%
  select(Sex, Embarked, (1:10)) %>%
  select(!("Name" | "Ticket")) %>%
  filter(Embarked != "") # deleting empty Embarked status
names(df1)

df1$Sex<- factor(df1$Sex)
df1$Embarked <-factor(df1$Embarked)

#store all formulae in a list
formulae <- lapply(colnames(df1)[3:ncol(df1)], function(x) as.formula(paste0(x, " ~ Sex * Embarked")))

#go through list and run aov()
results <- lapply(formulae, function(x) summary(aov(x, data = df1)))
names(results) <- format(formulae)
results

【问题讨论】:

    标签: r loops lapply anova


    【解决方案1】:

    您可以从summary 中提取相关统计信息,或将模型存储在一个列表中并在其上使用broom::tidy 将所有统计信息汇总到一个数据框中。使用map 函数在模型列表上运行它。

    library(purrr)
    library(broom)
    
    results <- lapply(formulae, function(x) aov(x, data = df1))
    names(results) <- format(formulae)
    data <- map_df(results, tidy, .id = 'formulae')
    data
    
    # A tibble: 28 x 7
    #   formulae       term       df    sumsq  meansq statistic   p.value
    #   <chr>          <chr>   <dbl>    <dbl>   <dbl>     <dbl>     <dbl>
    # 1 PassengerId ~… Sex         1  1.09e+5 1.09e+5     1.65   1.99e- 1
    # 2 PassengerId ~… Embark…     2  5.50e+4 2.75e+4     0.416  6.60e- 1
    # 3 PassengerId ~… Sex:Em…     2  7.73e+4 3.86e+4     0.584  5.58e- 1
    # 4 PassengerId ~… Residu…   883  5.84e+7 6.61e+4    NA     NA       
    # 5 Survived ~ Se… Sex         1  6.16e+1 6.16e+1   376.     4.44e-70
    # 6 Survived ~ Se… Embark…     2  3.32e+0 1.66e+0    10.1    4.39e- 5
    # 7 Survived ~ Se… Sex:Em…     2  4.85e-1 2.43e-1     1.48   2.28e- 1
    # 8 Survived ~ Se… Residu…   883  1.45e+2 1.64e-1    NA     NA       
    # 9 Pclass ~ Sex … Sex         1  1.01e+1 1.01e+1    16.2    6.12e- 5
    #10 Pclass ~ Sex … Embark…     2  5.83e+1 2.91e+1    46.8    4.74e-20
    # … with 18 more rows
    

    data 写入 csv。

    write_csv(data, 'data.csv')
    

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2021-06-28
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 2010-09-23
      • 2010-11-01
      • 2017-07-18
      相关资源
      最近更新 更多