当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dplyr lead-lag 计算滞后值或领先值


查找向量中的 "previous" ( lag() ) 或 "next" ( lead() ) 值。对于比较当前值之前或之后的值很有用。

用法

lag(x, n = 1L, default = NULL, order_by = NULL, ...)

lead(x, n = 1L, default = NULL, order_by = NULL, ...)

参数

x

一个向量

n

长度为 1 的正整数,给出落后或领先的位置数

default

在应用滞后或超前后,用于将 x 填充回其原始大小的值。默认值 NULL 填充缺失值。如果提供,它必须是一个大小为 1 的向量,它将被转换为 x 的类型。

order_by

一个可选的辅助向量,定义将滞后或超前应用到 x 时要使用的顺序。如果提供,其大小必须与 x 相同。

...

不曾用过。

x 具有相同类型和大小的向量。

例子

lag(1:5)
#> [1] NA  1  2  3  4
lead(1:5)
#> [1]  2  3  4  5 NA

x <- 1:5
tibble(behind = lag(x), x, ahead = lead(x))
#> # A tibble: 5 × 3
#>   behind     x ahead
#>    <int> <int> <int>
#> 1     NA     1     2
#> 2      1     2     3
#> 3      2     3     4
#> 4      3     4     5
#> 5      4     5    NA

# If you want to look more rows behind or ahead, use `n`
lag(1:5, n = 1)
#> [1] NA  1  2  3  4
lag(1:5, n = 2)
#> [1] NA NA  1  2  3

lead(1:5, n = 1)
#> [1]  2  3  4  5 NA
lead(1:5, n = 2)
#> [1]  3  4  5 NA NA

# If you want to define a value to pad with, use `default`
lag(1:5)
#> [1] NA  1  2  3  4
lag(1:5, default = 0)
#> [1] 0 1 2 3 4

lead(1:5)
#> [1]  2  3  4  5 NA
lead(1:5, default = 6)
#> [1] 2 3 4 5 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)
#> # A tibble: 6 × 3
#>    year value previous_year_value
#>   <int> <dbl>               <dbl>
#> 1  2000     0                   1
#> 2  2001     1                  16
#> 3  2002     4                   9
#> 4  2003     9                   0
#> 5  2004    16                  25
#> 6  2005    25                  NA

right <- mutate(scrambled, previous_year_value = lag(value, order_by = year))
arrange(right, year)
#> # A tibble: 6 × 3
#>    year value previous_year_value
#>   <int> <dbl>               <dbl>
#> 1  2000     0                  NA
#> 2  2001     1                   0
#> 3  2002     4                   1
#> 4  2003     9                   4
#> 5  2004    16                   9
#> 6  2005    25                  16
源代码:R/lead-lag.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Compute lagged or leading values。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。