2016-02-07 75 views
0

對於要在R中使用dplyr包進行編碼的財務模型,我需要參考lag ged和lead變量值,但我似乎無法獲得按記錄工作的lag函數的代碼。R編程-dplyr包

> 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。 有什麼建議?謝謝。

+0

它給了我'滯後'的預期結果。你正在使用哪個版本的'dplyr'?你可以試試'dplyr :: lag(x,1)' – akrun

+0

適合我。嘗試它爲'dplyr :: lag(x,1)';該函數會屏蔽'stats :: lag',所以你的命名空間可能會變得困惑。重新加載'dplyr'通常也會照顧它,但無論如何都要注意,因此加載'dplyr'時的警告。 – alistaire

回答

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。雖然我會在這裏留待未來。