首页 > 解决方案 > 如何在宽格式 data.frame 上运行 ANOVA?

问题描述

我被教导使用以下公式运行方差分析:aov(因变量~自变量,数据集)

但我正在为如何为特定数据集运行方差分析而苦苦挣扎,因为它被分成三列,每列都包含一个值。三列被指定为新生儿、青少年和成人(即仓鼠年龄),每列中的值代表血压值。我需要进行测试以确定血压和年龄之间是否存在关系。

这是 R 中数据的样子:

> hamster
   Newborn adolescent adult
1      108        110   105
2      110        105   100
3       90        100    95
4       80         90    85
5      100        102    97
6      120        110   105
7      125        105   100
8      130        115   110
9      120        100    95
10     130        120   115
11     145        130   125
12     150        125   120
13     130        135   130
14     155        130   125
15     140        120   115

感到困惑,因为因变量是每列中的那些值 ^

标签: rdataframestatisticsreshapeanova

解决方案


第一步是重新排列您的数据,使其采用“长”格式而不是“宽”格式。这可以在基础 R 中使用该函数完成,但在包reshape中使用该函数要容易得多:gathertidyr

library(tidyr)
result <- hampster %>%
  gather(age, bp) %>%
  aov(bp ~ age, .)

Usingtidyr还为我们提供了管道运算符 ( %>%),它可以让您以一种漂亮的方式将命令链接在一起。默认情况下,它通过获取前一个函数的结果并将其作为下一个函数的第一个参数插入。在您的aov函数中,我们使用运算符覆盖 this.以显式地将函数产生的数据集gather作为第二个参数放入。


推荐阅读