我想对数据框中的列进行滚动减法。第2行将从第1行中减去。
此处的目标是从值列中的第1行中减去第2行...并将其向下滚动到data.frame
Excel只是= sum(B2-B1)
示例数据框位于
之下 Date Value Diff
1 19280103 17.76 NA
2 19280104 17.72 -0.04
3 19280105 17.55 -0.17
4 19280106 17.66 0.11
5 19280107 17.68 0.02
6 19280109 17.5 -0.18
7 19280110 17.37 -0.13
答案 0 :(得分:1)
使用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