gpt4 book ai didi

r - 如何分离 R 中的因子相互作用

转载 作者:行者123 更新时间:2023-12-02 04:42:44 24 4
gpt4 key购买 nike

我最近不得不根据因素的相互作用绘制一些数据图表,我发现这比我认为 R 中应该有的东西更难。我怀疑我遗漏了什么。假设我有一个包含 30 个数字和一对因子的向量。

n <- runif(30, min=0, max=10)
a <- gl(2, 1, 30)
b <- gl(6, 2, 30)

我想要每个因素组合的平均值。

y <- tapply(n, a:b, mean)

现在我想使用点阵 xyplot 绘制这些均值,其中我有一个面板用于 a 的两个值中的每一个。均值是 y 值,b 因子是 x 值。常用的 xyplot 公式类似于

xyplot( y ~ b | a, data=mydf)

其中 mydf 是一个包含列 yb 和 ,a 的数据框,它们是从在上面点击。但我的问题是如何理清相互作用的因素。这就是我所做的。

factorSplit <- strsplit(names(y), ":")
a1 <- sapply(factorSplit, function(x) {x[1]})
b1 <- sapply(factorSplit, function(x) {x[2]})
mydf <- data.frame(y, b1, a1)

现在 mydf

> mydf
y b1 a1
1:1 3.856797 1 1
1:2 3.487181 2 1
1:3 8.411425 3 1
1:4 3.757709 4 1
1:5 4.982970 5 1
1:6 6.480346 6 1
2:1 2.778864 1 2
2:2 4.390511 2 2
2:3 7.119926 3 2
2:4 4.707945 4 2
2:5 5.546894 5 2
2:6 8.984631 6 2

我可以用

xyplot(y ~ b1 | a1, mydf, layout=c(1,2))

但我觉得用 strsplitnames(y) 然后 sapply 是多余的。似乎应该有一种更直接的方法来恢复使用 tapply 创建的因子交互作用。

最佳答案

aggregate 函数正是我所缺乏的理解。正如评论中所指出的,一次调用 aggregate 就完成了我之前费力完成的所有工作。

> x <- aggregate(n ~ a+b, NULL, mean)
> head(x)
a b n
1 1 1 2.967073
2 2 1 3.001279
3 1 2 3.867564
4 2 2 1.076378
5 1 3 2.805827
6 2 3 6.275858
> dim(x)
[1] 12 3
>

关于r - 如何分离 R 中的因子相互作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36120285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com