多变量数据帧差异

时间:2015-01-06 17:04:17

标签: r casting diff apply

我有data.frame看起来像这样:

AsofDate    PeriodStartDate   Price
2007-12-01  2008-01-01        8
2007-12-01  2008-04-01        10
2007-12-01  2008-10-01        16
2007-12-01  2009-01-01        29
2007-12-02  2008-01-01        8
2007-12-02  2008-04-01        10
2007-12-02  2008-10-01        16
2007-12-02  2009-01-01        29

我想计算每天每个相邻季度之间的差异。

因此,我希望能够通过不同的时间戳快速创建每季度差异的一次性系列。

我试图将其转动,或使用by,但效果不佳。

1 个答案:

答案 0 :(得分:0)

在基地R你可以做到

df$diff <- unlist(tapply(df$Price, df$AsofDate, function(x) c(NA,diff(x))))

> df
AsofDate PeriodStartDate Price diff
1 2007-12-01      2008-01-01     8   NA
2 2007-12-01      2008-04-01    10    2
3 2007-12-01      2008-10-01    16    6
4 2007-12-01      2009-01-01    29   13
5 2007-12-02      2008-01-01     8   NA
6 2007-12-02      2008-04-01    10    2
7 2007-12-02      2008-10-01    16    6
8 2007-12-02      2009-01-01    29   13