【发布时间】:2021-05-25 19:28:23
【问题描述】:
我无法弄清楚如何将purrr::map() 与mutate(across(...)) 一起使用。
我想做一个线性模型,并提取单列预测的多列斜率的估计值。
这是我正在尝试的示例数据集:
mtcars %>%
mutate(across(-mpg),
map(.x, lst(slope = ~lm(.x ~ mpg, data = .x) %>%
tidy() %>%
filter(term != "(Intercept") %>%
pull(estimate)
)))
我正在寻找的输出将是每个非 mpg 列的新列,名称后附加 _slope,即cyl_slope
在我的实际数据中,我也会按另一个变量进行分组,以防万一,因为我需要每个预测变量的每个组的斜率。我有这个在标准变异中工作,一次做一个变量,如下所示:
df %>%
group_by(unitid) %>%
nest() %>%
mutate(tuition_and_fees_as_pct_total_rev_slope = map_dbl(data, ~lm(tuition_and_fees_as_pct_total_rev ~ year, data = .x) %>%
tidy() %>%
filter(term == "year") %>%
pull(estimate)
))
所以:
- 我认为我的问题是如何将预测的列名传递到
lm - 我不知道解决方案是否需要嵌套,因此如果在考虑的
mtcars示例中将不胜感激。
【问题讨论】:
-
第二种情况,有没有可重现的例子。第一个不起作用,因为 1)
across(-mpg)关闭,2)data = .x应该是原始数据,因为.x是向量 -
@akrun 不,不幸的是,我不知道如何让它工作。