2017-08-07 69 views
0

在R中,我們如何在滯後函數中使用矢量而不是元素。即對於Lag(x,k = 2);而不是2我想使用一個矢量,因爲我想用不同的值延遲每一行。因此,一個行可能有3滯後,而1可能是0等如何在R中的滯後操作中使用矢量

例子:

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

回答

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) 

希望這有助於。 :)

+0

這個工程完全按照我想要的。需要按照我的要求進行調整 –

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)