-
Notifications
You must be signed in to change notification settings - Fork 185
Description
Back in 2017, @hadley suggested "there are two possible APIs" for implementing what became window_frame() and window_order() (see tidyverse/dplyr#2874; @edgararuiz-zz).
At the time, I believe there was no .by argument to mutate(), so the window_frame()/window_order() approach seemed to make most sense. At that time one choice was:
df %>%
group_by(gvkey) %>%
window(
.order = vars(datadate),
.frame = (-3, 0),
sale_ttm = sum(sale),
cogs_ttm = sum(cogs),
sga_ttm = sum(sga)
)But now this could be something like:
df |>
mutate(
sale_ttm = sum(sale),
cogs_ttm = sum(cogs),
sga_ttm = sum(sga),
.by = gvkey,
.order = vars(datadate),
.frame = (-3, 0)
)This would seem to have the merit of making it easier for dbplyr to infer that a window function was being sought (currently there are cases where dbplyr does not get the hint).
I am surprised that I have only one instance of window_frame() in my book. It seems like a very handy pattern (e.g., moving averages, windowed regressions).
I had a comical exchange with ChatGPT about this this afternoon (Australia time) (see here).