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)

Arguments

.data

A tbl_svy object

.f

A function or purrr-style formula to apply to each group

...

Other arguments passed to .f

.keep

Whether the grouping variables are kept when passed into .f

Value

For group_map a list, for group_map_dfr a `tbl_df`, and for

group_walk invisibly the original tbl_svy.

Examples

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"]]
    )
  )