滚动减法到列

时间:2017-07-09 13:34:02

标签: r

我想对数据框中的列进行滚动减法。第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

1 个答案:

答案 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