|
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