r - 如何在宽格式 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
感到困惑,因为因变量是每列中的那些值 ^
解决方案
第一步是重新排列您的数据,使其采用“长”格式而不是“宽”格式。这可以在基础 R 中使用该函数完成,但在包reshape
中使用该函数要容易得多:gather
tidyr
library(tidyr)
result <- hampster %>%
gather(age, bp) %>%
aov(bp ~ age, .)
Usingtidyr
还为我们提供了管道运算符 ( %>%
),它可以让您以一种漂亮的方式将命令链接在一起。默认情况下,它通过获取前一个函数的结果并将其作为下一个函数的第一个参数插入。在您的aov
函数中,我们使用运算符覆盖 this.
以显式地将函数产生的数据集gather
作为第二个参数放入。
推荐阅读
- java - 从库中扩展 GlobalMethodSecurityConfiguration 配置
- javascript - Card.Img 未完全适用于 iOS 上带有 svg 的 react-bootstrap 中的 Card.ImgOverlay
- sql - SQL 连接两个具有相同列的表,具有重叠的 `id` 列,但基于 if table1.col1 >= table2.col1 进行合并
- react-native - 反应原生将平面列表从一个屏幕移动到另一个屏幕
- editorconfig - 如何强制将所有标签属性放在一行上?
- javascript - 将 this.id 传递给另一个函数会返回 null 错误
- flutter - CupertinoPageRouter 从左侧滑出
- javascript - 如何使用 withRouter 在类组件中导航或路由到渲染之外的 js 文件?
- c++ - 扩展模板参数包以声明类成员
- javascript - VC Code Intellisense 忽略 WebPack 中的 lodash 依赖项