if (require("dplyr") && require("tidyr") && require("purrr")) {
data(efc)
# create nested data frame, grouped by dependency (e42dep)
# and fit linear model for each group. These models are
# stored in the list variable "models".
model.data <- efc %>%
filter(!is.na(e42dep)) %>%
group_by(e42dep) %>%
nest() %>%
mutate(
models = map(data, ~lm(neg_c_7 ~ c12hour + c172code, data = .x))
)
# spread coefficients, so we can easily access and compare the
# coefficients over all models. arguments `se` and `p.val` default
# to `FALSE`, when `model.term` is not specified
spread_coef(model.data, models)
spread_coef(model.data, models, se = TRUE)
# select only specific model term. `se` and `p.val` default to `TRUE`
spread_coef(model.data, models, c12hour)
# spread_coef can be used directly within a pipe-chain
efc %>%
filter(!is.na(e42dep)) %>%
group_by(e42dep) %>%
nest() %>%
mutate(
models = map(data, ~lm(neg_c_7 ~ c12hour + c172code, data = .x))
) %>%
spread_coef(models)
}
Run the code above in your browser using DataLab