【问题标题】:Get difference to previous date in R在R中获取与上一个日期的差异
【发布时间】:2012-10-29 12:35:49
【问题描述】:

我有一个交易日和市场价值的交易清单。每个(交易)日都有新头寸进入列表,但旧头寸永远不会消失(当头寸到期时,价值保持不变)。该列表如下所示:

Deal Trade_Date MktValue Desidered_Col
Deal1 31.08.2012 10 +10
Deal2 31.08.2012 21 +21
Deal1 03.09.2012 12 +2
Deal2 03.09.2012 19 -2
Deal3 03.09.2012 2  +2

我希望每笔交易都获得与前一个交易日期的差额(上例中的 Desidered_Col)。我想避免循环只是因为我的列表很长。我正在使用 R。 如果有人有任何建议,我将不胜感激。谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    data.table 用于大型数据集:

    df <- read.table(text="Deal Trade_Date MktValue Desidered_Col
    Deal1 31.08.2012 10 +10
    Deal2 31.08.2012 21 +21
    Deal1 03.09.2012 12 +2
    Deal2 03.09.2012 19 -2
    Deal3 03.09.2012 2  +2",header=TRUE)
    
    library(data.table)
    dt <- as.data.table(df)
    
    diff.padded <- function(x) c(x[1],diff(x))
    
    dt[,Desidered_Col2:=diff.padded(MktValue),by=Deal]
    
    #    Deal Trade_Date MktValue Desidered_Col Desidered_Col2
    #1: Deal1 31.08.2012       10            10             10
    #2: Deal2 31.08.2012       21            21             21
    #3: Deal1 03.09.2012       12             2              2
    #4: Deal2 03.09.2012       19            -2             -2
    #5: Deal3 03.09.2012        2             2              2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      相关资源
      最近更新 更多