gpt4 book ai didi

r - 将 lm 应用于由帧的第三列定义的数据帧的子集

转载 作者:行者123 更新时间:2023-12-04 12:05:53 25 4
gpt4 key购买 nike

我有一个包含 x 值向量、y 值向量和 ID 向量的数据框:

x <- rep(0:3, 3)
y <- runif(12)
ID <- c(rep("a", 4), rep("b", 4), rep("c", 4))
df <- data.frame(ID=ID, x=x, y=y)

我想为共享相同 ID 的 x 和 y 的子集创建一个单独的 lm。以下代码完成工作:
a.lm <- lm(x~y, data=subset(df, ID=="a"))
b.lm <- lm(x~y, data=subset(df, ID=="b"))
c.lm <- lm(x~y, data=subset(df, ID=="c"))

除了这非常脆弱( future 的数据集可能有不同的 ID)和未矢量化。我还想将所有 lms 存储在一个数据结构中。必须有一种优雅的方式来做到这一点,但我找不到。有什么帮助吗?

最佳答案

使用 base功能,您可以split您的原始数据框并使用 lapply对此:

lapply(split(df,df$ID),function(d) lm(x~y,d))
$a

Call:
lm(formula = x ~ y, data = d)

Coefficients:
(Intercept) y
-0.2334 2.8813


$b

Call:
lm(formula = x ~ y, data = d)

Coefficients:
(Intercept) y
0.7558 1.8279


$c

Call:
lm(formula = x ~ y, data = d)

Coefficients:
(Intercept) y
3.451 -7.628

关于r - 将 lm 应用于由帧的第三列定义的数据帧的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414638/

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