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
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
私はあなたがこの作業のために独自の関数を書く必要かもしれないと思う: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)
これは役に立ちます。 :)ここで
は、インデックス計算とソリューションです:
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)
これは私が望んでいたとおりに動作します。私の要件に応じてそれを微調整する必要があります –