group_map()
, group_walk
and group_map_dfr
are purrr-style
functions that can be used to iterate on grouped survey objects (note that
group_map_dfr
replaces dplyr::group_modify
because we are changing
the data from a tbl_svy
to a regular tibble).
group_map_dfr(.data, .f, ..., .keep = FALSE)
# S3 method for tbl_svy
group_map(.data, .f, ..., .keep = FALSE)
group_map_dfr(.data, .f, ..., .keep = FALSE)
A tbl_svy object
A function or purrr-style formula to apply to each group
Other arguments passed to .f
Whether the grouping variables are kept when passed into .f
For group_map
a list, for group_map_dfr
a `tbl_df`, and for
group_walk
invisibly the original tbl_svy
.
data(api, package = "survey")
dstrata <- apistrat %>%
as_survey_design(strata = stype, weights = pw)
results <- dstrata %>%
group_by(both) %>%
group_map(~survey::svyglm(api00~api99 + stype, .))
# group_map_dfr calls `bind_rows` on the list returned and includes
# grouping variables. This is most useful with a package like `broom`
# but could also be used with survey package functions.
result_coef <- dstrata %>%
group_by(both) %>%
group_map_dfr(
~data.frame(
api99_coef = coef(survey::svyglm(api00~api99 + stype, .))[["api99"]]
)
)