运行 数据帧内组的线性模型并将输出存储在 R 中的数据帧中

Running linear models for groups within dataframe and storing outputs in dataframe in R

我正在尝试 运行 一个非常大的数据集的多个线性模型,并将输出存储在一个数据框中。我已经设法将估计值和 p 值输入到数据框中(见下文),但我还想为每个模型存储 AIC。

#example dataframe

dt = data.frame(x = rnorm(40, 5, 5),
                y = rnorm(40, 3, 4),
                group = rep(c("a","b"), 20))

library(dplyr)
library(broom)

# code that runs lm for each group in row z and stores output 
dt_lm <- dt %>%
  group_by(group) %>%  
  do(tidy(lm(y~x, data=.)))

使用glance代替tidy

dt_lm <- dt %>%
  group_by(group) %>%
  do(glance(lm(y~x, data=.))) %>%
  select(AIC)

给出:

Adding missing grouping variables: `group`
# A tibble: 2 x 2
# Groups:   group [2]
  group   AIC
  <chr> <dbl>
1 a      119.
2 b      114.

如果您不仅要存储 AIC,还要存储其他指标,请跳过 select 部分。

dplyr 的较新版本中,即 >= 1.0,我们还可以使用 nest_by

library(dplyr)
library(tidyr)
library(broom)
dt %>% 
     nest_by(group) %>%
     transmute(out = list(glance(lm(y ~ x, data = data))))  %>% 
     unnest(c(out)) %>% 
     select(AIC)
# A tibble: 2 x 2
# Groups:   group [2]
#  group   AIC
#  <chr> <dbl>
#1 a      115.
#2 b      100.