Если вы ищете решение в r
(как вы пометили его в своем вопросе), вы можете использовать функцию lag
/ lead
из пакета dplyr
.
Здесь, чтобы проиллюстрировать это, я создаю поддельный вектор, который я преобразую как data.frame для использования в dplyr
, затем функция mutate
создает новый столбец с соответствующей функцией:
set.seed(123)
df <- data.frame(A = sample(1:10,10, replace = TRUE))
library(dplyr)
df %>% mutate(Diff1 = A-lag(A), Diff2 = A-lead(A))
A Diff1 Diff2
1 3 NA 0
2 3 0 -7
3 10 7 8
4 2 -8 -4
5 6 4 1
6 5 -1 1
7 4 -1 -2
8 6 2 -3
9 9 3 -1
10 10 1 NA
Это отвечает на ваш вопрос?