R编程 - dplyr包

时间:2016-02-07 06:29:23

标签: r dplyr

要使用R中的dplyr包进行编码的财务模型,我需要参考lag ged和lead变量值,但我似乎无法获取代码lag函数按照记录的方式工作。

> library(dplyr)
> x <- seq(100,500,100)
> x
[1] 100 200 300 400 500
> lead(x,1)
[1] 200 300 400 500  NA
> lag(x,1)
Error in lag(x, 1) : unused argument (1)
> 

我期待lag(x,1)导致:NA 100 200 300 400。 有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:0)

lag对于R来说是一个奇怪的函数。它只能按预期的方式使用时间序列对象。例如:

cbind(x = ts(1:10), y = lag(1:10, -1))

给你:

    x  y
    1 NA
    2  1
    3  2
    4  3
    5  4
    6  5
    7  6
    8  7
    9  8
    10  9
    NA 10

如果你想要一个快速而肮脏的功能来做你想要的,我会用它:

lag_n <- function(x, n) {c(rep(NA, n), x)[1:length(x)])}

在你的情况下,它给出:

lag_n(seq(100,500,100),1)
[1]  NA 100 200 300 400

编辑:哎呀。这是在谈论stats::lag。我用dplyr::lag得到了预期的结果。虽然我将把它放在这里以备将来使用。