dplyr provides cumall(), cumany(), and cummean() to complete R's set of cumulative functions.
cumall(x)cumany(x)cummean(x)
Arguments
x: For cumall() and cumany(), a logical vector; for cummean() an integer or numeric vector.
Returns
A vector the same length as x.
Cumulative logical functions
These are particularly useful in conjunction with filter():
cumall(x): all cases until the first FALSE.
cumall(!x): all cases until the first TRUE.
cumany(x): all cases after the first TRUE.
cumany(!x): all cases after the first FALSE.
Examples
# `cummean()` returns a numeric/integer vector of the same length# as the input vector.x <- c(1,3,5,2,2)cummean(x)cumsum(x)/ seq_along(x)# `cumall()` and `cumany()` return logicalscumall(x <5)cumany(x ==3)# `cumall()` vs. `cumany()`df <- data.frame( date = as.Date("2020-01-01")+0:6, balance = c(100,50,25,-25,-50,30,120))# all rows after first overdraftdf %>% filter(cumany(balance <0))# all rows until first overdraftdf %>% filter(cumall(!(balance <0)))