如何在R中的滞后操作中使用向量

时间:2017-08-07 12:38:18

标签: r lag

在R中,我们如何在滞后函数中使用向量而不是元素。即Lag(x,k = 2);而不是2我想使用向量,因为我想将每一行滞后一个不同的值。因此,一行可能有3的延迟,而1可能是0等。

示例:

a #lags d
1 0     1 
2 1     1
4 2     1
3 0     3
1 1     3

2 个答案:

答案 0 :(得分:0)

我认为您可能需要为此任务编写自己的函数。我写了一个我认为你需要的东西,或者可能指出你正确的方向:

x1 <- c(75,98,65,45,78,94,123,54) #a fake data set for us to lag
y1 <- c(2,3,1,4,1,2,3,5) #vector of values to lag by

#the function below takes the data, x1, and lags it by y1

dynlag <- function(x,y) {
a1 <- x[length(x)-y]
return(a1)
}

#test out the function

dynlag(x1,y1)
希望这会有所帮助。 :)

答案 1 :(得分:0)

以下是索引演算的解决方案:

D <- read.table(header=TRUE, text=
'a lags d
1 0     1 
2 1     1
4 2     1
3 0     3
1 1     3')
i <- seq(length(D$a))
erg <- D$a[i - D$lags]
all.equal(erg, D$d)