0

列の差 (変化/デルタ) を計算したいと思います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でこれを行うきちんとした方法はありますか? 一般に、差を計算する方法はありますか。差はwrtで計算されます。カスタムオーダー/インデックス? indexing-variable は、この例では になります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 に答える