我想计算我的专栏value
的差异(更改/增量)。 Data.frame:
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中有这样一种巧妙的方法吗?通常有一种计算差异的方法,其中差异是通过计算得出的。自定义订单/索引?索引变量将在此前为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
结果应该是值(tmt2) - 值(tmt1),其中tmt2> tmt1总是。 斯蒂
答案 0 :(得分: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