當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。