@@ -4,9 +4,83 @@ Note that `epiprocess` uses the [Semantic Versioning
44("semver")] ( https://semver.org/ ) scheme for all release versions, but not for
55development versions. A ".9999" suffix indicates a development version.
66
7+ ## Breaking changes:
8+
9+ * Changes to both ` epi_slide ` and ` epix_slide ` :
10+ * The ` n ` , ` align ` , and ` before ` arguments have been replaced by new ` before `
11+ and ` after ` arguments. To migrate to the new version, replace these
12+ arguments in every ` epi_slide ` and ` epix_slide ` call. If you were only using
13+ the ` n ` argument, then this means replacing ` n = <n value> ` with `before =
14+ <n value > - 1`.
15+ * ` epi_slide ` 's time windows now extend ` before ` time steps before and
16+ ` after ` time steps after the corresponding ` ref_time_values ` . See
17+ ` ?epi_slide ` for details on matching old alignments.
18+ * ` epix_slide ` 's time windows now extend ` before ` time steps before the
19+ corresponding ` ref_time_values ` all the way through the latest data
20+ available at the corresponding ` ref_time_values ` .
21+ * Slide functions now keep any grouping of ` x ` in their results, like
22+ ` mutate ` and ` group_modify ` .
23+ * To obtain the old behavior, ` dplyr::ungroup ` the slide results immediately.
24+ * Additional` epix_slide ` changes:
25+ * ` epix_slide ` 's ` group_by ` argument has been replaced by ` dplyr::group_by ` and
26+ ` dplyr::ungroup ` S3 methods. The ` group_by ` method uses "data masking" (also
27+ referred to as "tidy evaluation") rather than "tidy selection".
28+ * Old syntax:
29+ * ` x %>% epix_slide(<other args>, group_by=c(col1, col2)) `
30+ * ` x %>% epix_slide(<other args>, group_by=all_of(colname_vector)) `
31+ * New syntax:
32+ * ` x %>% group_by(col1, col2) %>% epix_slide(<other args>) `
33+ * ` x %>% group_by(across(all_of(colname_vector))) %>% epix_slide(<other args>) `
34+ * ` epix_slide ` no longer defaults to grouping by non-` time_value ` , non-` version `
35+ key columns, instead considering all data to be in one big group.
36+ * To obtain the old behavior, precede each ` epix_slide ` call lacking a
37+ ` group_by ` argument with an appropriate ` group_by ` call.
38+ * ` epix_slide ` now guesses ` ref_time_values ` to be a regularly spaced sequence
39+ covering all the ` DT$version ` values and the ` version_end ` , rather than the
40+ distinct ` DT$time_value ` s. To obtain the old behavior, pass in
41+ ` ref_time_values = unique(<ungrouped archive>$DT$time_value) ` .
42+ * ` epi_archive ` 's ` clobberable_versions_start ` 's default is now ` NA ` , so there
43+ will be no warnings by default about potential nonreproducibility. To obtain
44+ the old behavior, pass in `clobberable_versions_start =
45+ max_version_with_row_in(x)`.
46+
47+ ## Potentially-breaking changes:
48+
49+ * Fixed ` [ ` on grouped ` epi_df ` s to maintain the grouping if possible when
50+ dropping the ` epi_df ` class (e.g., when removing the ` time_value ` column).
51+ * Fixed ` epi_df ` operations to be more consistent about decaying into
52+ non-` epi_df ` s when the result of the operation doesn't make sense as an
53+ ` epi_df ` (e.g., when removing the ` time_value ` column).
54+ * Changed ` bind_rows ` on grouped ` epi_df ` s to not drop the ` epi_df ` class. Like
55+ with ungrouped ` epi_df ` s, the metadata of the result is still simply taken
56+ from the first result, and may be inappropriate
57+ ([ #242 ] ( https://github.com/cmu-delphi/epiprocess/issues/242 ) ).
58+ * ` epi_slide ` and ` epix_slide ` now raise an error rather than silently filtering
59+ out ` ref_time_values ` that don't meet their expectations.
60+
61+ ## New features:
62+
63+ * ` epix_slide ` , ` <epi_archive>$slide ` have a new parameter ` all_versions ` . With
64+ ` all_versions=TRUE ` , ` epix_slide ` will pass a filtered ` epi_archive ` to each
65+ computation rather than an ` epi_df ` snapshot. This enables, e.g., performing
66+ pseudoprospective forecasts with a revision-aware forecaster using nested
67+ ` epix_slide ` operations.
68+
69+ ## Improvements:
70+
71+ * Added ` dplyr::group_by ` and ` dplyr::ungroup ` S3 methods for ` epi_archive `
72+ objects, plus corresponding ` $group_by ` and ` $ungroup ` R6 methods. The
73+ ` group_by ` implementation supports the ` .add ` and ` .drop ` arguments, and
74+ ` ungroup ` supports partial ungrouping with ` ... ` .
75+ * ` as_epi_archive ` , ` epi_archive$new ` now perform checks for the key uniqueness
76+ requirement (part of
77+ [ #154 ] ( https://github.com/cmu-delphi/epiprocess/issues/154 ) ).
78+
779## Cleanup:
880
981* Added a ` NEWS.md ` file to track changes to the package.
82+ * Implemented ` ?dplyr::dplyr_extending ` for ` epi_df ` s
83+ ([ #223 ] ( https://github.com/cmu-delphi/epiprocess/issues/223 ) ).
1084
1185# epiprocess 0.5.0:
1286
0 commit comments