【发布时间】:2019-01-14 13:51:33
【问题描述】:
我正在为具有 45 个不同 id 值的因变量计算线性回归的模型输出。如何使用 tidy(dplyr、apply 等)代码来完成此操作?
我有一个包含三个变量的数据集data = c(id、distance、actPct) 这样id == 1:45; -10 distance actsPct
我需要对id 的每个值运行回归model0n,这样model0n 就会放入一个新的tibble/df。我已经完成了一次回归:
model01 <- data %>%
filter(id == 1) %>%
filter(distance < 1) %>%
filter(distance > -4)
model01 <- lm(data = model01, actPct~distance)
示例数据
set.seed(42)
id <- as.tibble(sample(1:45,100,replace = T))
distance <- as.tibble(sample(-4:4,100,replace = T))
actPct <- as.tibble(runif(100, min=0, max=1))
data01 <- bind_cols(id=id, distance=distance, actPct=actPct)
attr(data01, "col.names") <- c("id", "distance", "actPct")
我希望新的 tibble 或数据框具有 model01:model45,因此我可以将所有回归输出放入一个表中。
【问题讨论】:
-
apply根据我的经验通常很慢。 -
@NelsonGon,谢谢,我之前没有体验过缓慢的
apply函数。你还有其他喜欢的吗?我读到的所有内容都表明apply比for loop快,所以我想我会试一试。 -
你能看看这个问题是否有帮助吗?似乎和你的stackoverflow.com/questions/53968490/… 相似,可能使用
apply家庭的其他成员,但不是apply(个人意见)。