使用dplyr很容易,您可以使用滞后函数。
> library('dplyr')
> x <- c(1,3,5,6,7,8,9,10,5,4)
> y <- 1:length(x)
>
> dt <- data.frame('x' = x, 'y' = y)
>
> dt %>% mutate(diffx = x - lag(x, 1), diffy = y - lag(y, 1))
x y diffx diffy
1 1 1 NA NA
2 3 2 2 1
3 5 3 2 1
4 6 4 1 1
5 7 5 1 1
6 8 6 1 1
7 9 7 1 1
8 10 8 1 1
9 5 9 -5 1
10 4 10 -1 1
你也可以这样做:
> cbind(dt, 'diffx' = c(NA, diff(x)), 'diffy' = c(NA, diff(y)))
x y diffx diffy
1 1 1 NA NA
2 3 2 2 1
3 5 3 2 1
4 6 4 1 1
5 7 5 1 1
6 8 6 1 1
7 9 7 1 1
8 10 8 1 1
9 5 9 -5 1
10 4 10 -1 1