Find the "previous" (lag()) or "next" (lead()) values in a vector. Useful for comparing values behind of or ahead of the current values.
lag(x, n =1L, default =NULL, order_by =NULL,...)lead(x, n =1L, default =NULL, order_by =NULL,...)
Arguments
x: A vector
n: Positive integer of length 1, giving the number of positions to lag or lead by
default: The value used to pad x back to its original size after the lag or lead has been applied. The default, NULL, pads with a missing value. If supplied, this must be a vector with size 1, which will be cast to the type of x.
order_by: An optional secondary vector that defines the ordering to use when applying the lag or lead to x. If supplied, this must be the same size as x.
...: Not used.
Returns
A vector with the same type and size as x.
Examples
lag(1:5)lead(1:5)x <-1:5tibble(behind = lag(x), x, ahead = lead(x))# If you want to look more rows behind or ahead, use `n`lag(1:5, n =1)lag(1:5, n =2)lead(1:5, n =1)lead(1:5, n =2)# If you want to define a value to pad with, use `default`lag(1:5)lag(1:5, default =0)lead(1:5)lead(1:5, default =6)# If the data are not already ordered, use `order_by`scrambled <- slice_sample( tibble(year =2000:2005, value =(0:5)^2), prop =1)wrong <- mutate(scrambled, previous_year_value = lag(value))arrange(wrong, year)right <- mutate(scrambled, previous_year_value = lag(value, order_by = year))arrange(right, year)