2017-08-07 4 views
0

Rでは、ラグ関数で要素の代わりにベクトルを使う方法を教えてください。すなわち、Lag(x、k = 2)の場合、 2の代わりに、私はベクトルを使用したい。なぜなら、各行を異なる値で遅らせたいからです。ラグ演算でのベクトルの使い方R

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

答えて

0

私はあなたがこの作業のために独自の関数を書く必要かもしれないと思う:1が0など

例可能性がありながら、だから、1つの行が、3の遅れを持つことができます。私はあなたが必要としているものと思っているものを書いたか、あるいは正しい方向を指していると思います。

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) 
関連する問題