[英]Using dplyr rowwise to create multiple linear models
考虑这篇文章: https://www.tidyverse.org/blog/2020/06/dplyr-1-0-0/
我试图使用多个公式为数据集创建多个模型。 这个例子说:
library(dplyr, warn.conflicts = FALSE)
models <- tibble::tribble(
~model_name, ~ formula,
"length-width", Sepal.Length ~ Petal.Width + Petal.Length,
"interaction", Sepal.Length ~ Petal.Width * Petal.Length
)
iris %>%
nest_by(Species) %>%
left_join(models, by = character()) %>%
rowwise(Species, model_name) %>%
mutate(model = list(lm(formula, data = data))) %>%
summarise(broom::glance(model))
你可以看到rowwise
function 用于得到答案,但是当我不使用这个 function 时,我仍然得到正确的答案
iris %>%
nest_by(Species) %>%
left_join(models, by = character()) %>%
mutate(model = list(lm(formula, data = data))) %>%
summarise(broom::tidy(model))
我只丢失了“model_name”列,但考虑到rowwise
文档说,这个 function 是要计算的,我不明白为什么仍然以这种方式计算,为什么会发生这种情况?
提前致谢。
考虑https://cran.r-project.org/web/packages/dplyr/vignettes/rowwise.html
您可以选择在对 rowwise() 的调用中提供“标识符”变量。 这些变量在您调用 summarise() 时会被保留,因此它们的行为与传递给 group_by() 的分组变量有些相似:
我不明白标识符是如何工作的,所以到目前为止我得到这个“标识符”(物种,模型名称)不会影响如何计算一个值,只会影响你的小标题的呈现方式。
因此,如果您有由 nest_by 创建的nest_by
,则不需要rowwise()
function 逐行计算。 因此,在我的示例中, rowwise
只会给您额外的信息列,但线性 model 仍然相同。 这只是为了一种“优雅的方式”,它不会改变它的计算方式。
感谢 tmfmnk
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.