【问题标题】:Calculate differences in column with column of index计算列与索引列的差异
【发布时间】:2014-01-08 13:38:59
【问题描述】:

我想计算我的专栏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 总是。 斯蒂格

【问题讨论】:

  • 好的。因此,在您的编辑中,只需先使用order,然后再使用diff。还是我错过了什么?
  • 这只是数据的一个子集。还有 2-3 个分组变量。最好我想订购和计算每组的差异,然后用平均值聚合。组由 ID、名称、日期和来源组成,留下 Tenor/tmt 和值有待区分。

标签: r difference


【解决方案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

【讨论】:

    猜你喜欢
    • 2022-11-01
    • 2011-09-23
    • 2019-11-13
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-05-10
    • 2012-10-14
    • 2020-01-02
    相关资源
    最近更新 更多