I want to:
- merge list out with dataframe df
- estimate an lm() model
id <- c(1,2,3,4,5,1,2,3,4,5)
quarter <- c("1","2","1","1","2", "3","1","1","3","3")
month <- c(3,4,2,1,5,7,3,1,8,9)
pred_dif <- c(0.5,0.1,0.15,0.23,0.75,0.6,0.49,0.81,0.37,0.14)
list_1 <- data.frame(id, pred_dif, month)
pred_dif <- c(0.45,0.18,0.35,0.63,0.25,0.63,0.29,0.11,0.17,0.24)
list_2 <- data.frame(id, pred_dif, month)
pred_dif <- c(0.58,0.13,0.55,0.13,0.76,0.3,0.29,0.81,0.27,0.04)
list_3 <- data.frame(id, pred_dif, month)
pred_dif <- c(0.3,0.61,0.18,0.29,0.85,0.76,0.56,0.91,0.48,0.91)
list_4 <- data.frame(id, pred_dif, month)
out <- list(list_1, list_2, list_3, list_4)
pred_second <- c(0.4,0.71,0.28,0.39,0.95,0.86,0.66,0.81,0.58,0.81)
df <- data.frame(id, quarter, pred_second, month)
library(purrr)
library(dplyr)
library(broom)
library(tidyr)
lmout_lst <- map(out,
~ left_join(.x, df, by = c('id', 'month')) %>%
group_by(quarter) %>%
summarise(new = list(lm(pred_dif ~ as.factor(month) - 1) %>%
broom::tidy(.))) %>%
unnest(new))
The problem happens in ols_list_reg. In particular with the "group_by" command.
Any idea why this is happening and possible solutions?
out[[1]] %>% filter(quarter == '1') %>% {lm(pred_dif ~ as.factor(month) - 1, data = .)}