Stable lifecycle

difference(x, lag = 1, differences = 1, default = NA,
  order_by = NULL)

Arguments

x

A numeric vector.

lag

An positive integer indicating which lag to use.

differences

An positive integer indicating the order of the difference.

default

Value used for non-existent rows, defaults to NA.

order_by

Override the default ordering to use another vector.

Value

A numeric vector of the same length as x.

See also

Examples

# examples from base difference(1:10, 2)
#> [1] NA NA 2 2 2 2 2 2 2 2
difference(1:10, 2, 2)
#> [1] NA NA NA NA 0 0 0 0 0 0
x <- cumsum(cumsum(1:10)) difference(x, lag = 2)
#> [1] NA NA 9 16 25 36 49 64 81 100
difference(x, differences = 2)
#> [1] NA NA 3 4 5 6 7 8 9 10
# Use order_by if data not already ordered (example from dplyr) library(dplyr, warn.conflicts = FALSE) tsbl <- tsibble(year = 2000:2005, value = (0:5)^2, index = year) scrambled <- tsbl %>% slice(sample(nrow(tsbl)))
#> Warning: Unspecified temporal ordering may yield unexpected results. #> Suggest to sort by `year` first.
wrong <- mutate(scrambled, diff = difference(value))
#> Warning: Unspecified temporal ordering may yield unexpected results. #> Suggest to sort by `year` first.
arrange(wrong, year)
#> # A tsibble: 6 x 3 [1Y] #> year value diff #> <int> <dbl> <dbl> #> 1 2000 0 -25 #> 2 2001 1 -3 #> 3 2002 4 -12 #> 4 2003 9 NA #> 5 2004 16 7 #> 6 2005 25 24
right <- mutate(scrambled, diff = difference(value, order_by = year))
#> Warning: Unspecified temporal ordering may yield unexpected results. #> Suggest to sort by `year` first.
arrange(right, year)
#> # A tsibble: 6 x 3 [1Y] #> year value diff #> <int> <dbl> <dbl> #> 1 2000 0 NA #> 2 2001 1 1 #> 3 2002 4 3 #> 4 2003 9 5 #> 5 2004 16 7 #> 6 2005 25 9