0

我想为我的专栏计算差异(更改/增量)value。数据框:

ID       Dato Tenor value   tmt
B1 2014-01-02    3M     8  0.25
B1 2014-01-02    6M    14  0.50
B1 2014-01-02    1Y    20  1.00
B1 2014-01-02    2Y    41  2.00
B1 2014-01-02    3Y    57  3.00
B1 2014-01-02    5Y    80  5.00
B1 2014-01-02    7Y    85  7.00
B1 2014-01-02   10Y    89 10.00

输出应该是 6M-3M、2Y-1Y 的差异,因此我正在寻找看起来像这样的新 data.frame:

ID       Dato Tenor value  tmt
B1 2014-01-02    6M     6 0.25
B1 2014-01-02    1Y     6 0.50
B1 2014-01-02    2Y    21 1.00
B1 2014-01-02    3Y    16 1.00
B1 2014-01-02    5Y    23 2.00
B1 2014-01-02    7Y     5 2.00
B1 2014-01-02   10Y     4 3.00

在 R 中有一种简洁的方法吗?一般来说,有一种计算差异的方法,其中差异是通过 wrt 计算的。自定义订单/索引?在这个 ex 中,索引变量将是tmt。data.frame 可能看起来像这样:

ID       Dato Tenor value   tmt
B1 2014-01-02    1Y    20  1.00
B1 2014-01-02    2Y    41  2.00
B1 2014-01-02    3Y    57  3.00
B1 2014-01-02    5Y    80  5.00
B1 2014-01-02    7Y    85  7.00
B1 2014-01-02   10Y    89 10.00
B1 2014-01-02    3M     8  0.25
B1 2014-01-02    6M    14  0.50

结果应该是 value(tmt2) - value(tmt1),其中 tmt2>tmt1 始终。斯蒂格

4

1 回答 1

1

我没有看到您所指的“自定义订单/索引”,但您的输出可以通过以下方式轻松获得diff

> x <- cbind(mydf[-1, ], value2 = diff(mydf$value))
> x
  ID       Dato Tenor value  tmt value2
2 B1 2014-01-02    6M    14  0.5      6
3 B1 2014-01-02    1Y    20  1.0      6
4 B1 2014-01-02    2Y    41  2.0     21
5 B1 2014-01-02    3Y    57  3.0     16
6 B1 2014-01-02    5Y    80  5.0     23
7 B1 2014-01-02    7Y    85  7.0      5
8 B1 2014-01-02   10Y    89 10.0      4
于 2014-01-08T13:43:47.760 回答