|
70 | 70 | #' @export |
71 | 71 | #' @seealso [`epi_slide_opt`] for optimized slide functions |
72 | 72 | #' @examples |
| 73 | +#' library(dplyr) |
| 74 | +#' |
73 | 75 | #' # Get the 7-day trailing standard deviation of cases and the 7-day trailing mean of cases |
74 | 76 | #' cases_deaths_subset %>% |
75 | 77 | #' epi_slide( |
76 | 78 | #' cases_7sd = sd(cases, na.rm = TRUE), |
77 | 79 | #' cases_7dav = mean(cases, na.rm = TRUE), |
78 | 80 | #' .window_size = 7 |
79 | 81 | #' ) %>% |
80 | | -#' dplyr::select(geo_value, time_value, cases, cases_7sd, cases_7dav) |
| 82 | +#' select(geo_value, time_value, cases, cases_7sd, cases_7dav) |
| 83 | +#' # Note that epi_slide_mean could be used to more quickly calculate cases_7dav. |
| 84 | +#' |
| 85 | +#' # In addition to the [`dplyr::mutate`]-like syntax, you can feed in a function or |
| 86 | +#' # formula in a way similar to [`dplyr::group_modify`]: |
| 87 | +#' my_summarizer <- function(window_data) { |
| 88 | +#' window_data %>% |
| 89 | +#' summarize( |
| 90 | +#' cases_7sd = sd(cases, na.rm = TRUE), |
| 91 | +#' cases_7dav = mean(cases, na.rm = TRUE) |
| 92 | +#' ) |
| 93 | +#' } |
| 94 | +#' cases_deaths_subset %>% |
| 95 | +#' epi_slide( |
| 96 | +#' ~ my_summarizer(.x), |
| 97 | +#' .window_size = 7 |
| 98 | +#' ) %>% |
| 99 | +#' select(geo_value, time_value, cases, cases_7sd, cases_7dav) |
| 100 | +#' |
| 101 | +#' |
81 | 102 | #' |
82 | | -#' # The same as above, but unpacking using an unnamed data.frame with a formula |
| 103 | +#' |
| 104 | +#' |
| 105 | +#' #### Advanced: #### |
| 106 | +#' |
| 107 | +#' # The tidyverse supports ["packing"][tidyr::pack] multiple columns into a |
| 108 | +#' # single tibble-type column contained within some larger tibble. Like dplyr, |
| 109 | +#' # we normally don't pack output columns together, but will if you provide a |
| 110 | +#' # name for a tibble-type output: |
83 | 111 | #' cases_deaths_subset %>% |
84 | 112 | #' epi_slide( |
85 | | -#' ~ data.frame( |
| 113 | +#' slide_packed = tibble( |
86 | 114 | #' cases_7sd = sd(.x$cases, na.rm = TRUE), |
87 | 115 | #' cases_7dav = mean(.x$cases, na.rm = TRUE) |
88 | 116 | #' ), |
89 | 117 | #' .window_size = 7 |
90 | 118 | #' ) %>% |
91 | | -#' dplyr::select(geo_value, time_value, cases, cases_7sd, cases_7dav) |
92 | | -#' |
93 | | -#' # The same as above, but packing using a named data.frame with a tidy evaluation |
94 | | -#' # expression |
| 119 | +#' select(geo_value, time_value, cases, slide_packed) |
95 | 120 | #' cases_deaths_subset %>% |
96 | 121 | #' epi_slide( |
97 | | -#' slide_packed = data.frame( |
| 122 | +#' ~ tibble( |
98 | 123 | #' cases_7sd = sd(.x$cases, na.rm = TRUE), |
99 | 124 | #' cases_7dav = mean(.x$cases, na.rm = TRUE) |
100 | 125 | #' ), |
| 126 | +#' .new_col_name = "slide_packed", |
101 | 127 | #' .window_size = 7 |
102 | 128 | #' ) %>% |
103 | | -#' dplyr::select(geo_value, time_value, cases, slide_packed) |
| 129 | +#' select(geo_value, time_value, cases, slide_packed) |
104 | 130 | #' |
105 | | -#' # nested new columns |
| 131 | +#' # You can also get ["nested"][tidyr::nest] format by wrapping your results in |
| 132 | +#' # a list: |
106 | 133 | #' cases_deaths_subset %>% |
107 | 134 | #' group_by(geo_value) %>% |
108 | 135 | #' epi_slide( |
109 | 136 | #' function(x, g, t) { |
110 | | -#' data.frame( |
| 137 | +#' list(tibble( |
111 | 138 | #' cases_7sd = sd(x$cases, na.rm = TRUE), |
112 | 139 | #' cases_7dav = mean(x$cases, na.rm = TRUE) |
113 | | -#' ) |
| 140 | +#' )) |
114 | 141 | #' }, |
115 | 142 | #' .window_size = 7 |
116 | 143 | #' ) %>% |
117 | 144 | #' ungroup() %>% |
118 | | -#' dplyr::select(geo_value, time_value, cases, cases_7sd, cases_7dav) |
| 145 | +#' select(geo_value, time_value, slide_value) |
| 146 | +#' |
| 147 | +#' |
119 | 148 | #' |
120 | 149 | #' # Use the geo_value or the ref_time_value in the slide computation |
121 | 150 | #' cases_deaths_subset %>% |
@@ -943,10 +972,8 @@ epi_slide_opt <- function( |
943 | 972 | #' # output column names: |
944 | 973 | #' covid_case_death_rates_extended %>% |
945 | 974 | #' group_by(geo_value) %>% |
946 | | -#' epi_slide_mean(c(case_rate, death_rate), |
947 | | -#' .window_size = 7, |
948 | | -#' .new_col_names = c("smoothed_case_rate", "smoothed_death_rate") |
949 | | -#' ) %>% |
| 975 | +#' epi_slide_mean(c(case_rate, death_rate), .window_size = 7, |
| 976 | +#' .new_col_names = c("smoothed_case_rate", "smoothed_death_rate")) %>% |
950 | 977 | #' ungroup() |
951 | 978 | #' covid_case_death_rates_extended %>% |
952 | 979 | #' group_by(geo_value) %>% |
|
0 commit comments