基本的に、R データフレームに列があり、次の関数を計算するコードを見つけたいと考えています。
(i - (i-1)) - ((i+1) - i)
つまり、関数の左側では から前の行の値を減算し(i-1)
、i
関数の右側でi
は次の行の値から減算したい(i+1)
誰かがそれを助けることができれば、それは大歓迎です。
基本的に、R データフレームに列があり、次の関数を計算するコードを見つけたいと考えています。
(i - (i-1)) - ((i+1) - i)
つまり、関数の左側では から前の行の値を減算し(i-1)
、i
関数の右側でi
は次の行の値から減算したい(i+1)
誰かがそれを助けることができれば、それは大歓迎です。
またはこのように?国境で何が起こるべきですか?
x <- (1:5)^2
-diff(diff(x))
# [1] -2 -2 -2
このような?
x <- (1:5)^2
#[1] 1 4 9 16 25
as.vector(filter(x,c(-1,2,-1),sides=1))
#[1] NA NA -2 -2 -2
あなたの説明は明確ではありません。がベクトルの場合a
、求めているものは次のように提供されます。
f <- diff(a[-length(a)]) - diff(a[-1])
1 < i < length(a) に対して定義されるため、length(f) = length(a) - 2
a を data.frame 列に置き換えます。
私は以前に同様のシナリオを経験しました。理想的には、はるかに高速であるため、ベクトル化されたコードに固執する必要があります。私が行ったことは、2つの新しいベクトルを作成することです。1つはすべてを1つ上にシフト(i-1)するか、1つ下にシフト(i + 1)し、計算でこれらを使用します。
i <- (1:5)^2
i.next <- c(i[2:length(i)],NA)
i.previous <- c(NA,i[1:length(i)-1])
i.calculation <- (i - i.previous) - (i.next - i)
cbind(i,i.next,i.previous,i.calculation)
# i i.next i.previous i.calculation
# [1,] 1 4 NA NA
# [2,] 4 9 1 -2
# [3,] 9 16 4 -2
# [4,] 16 25 9 -2
# [5,] 25 NA 16 NA