r - 在 R 中获取与前一个日期的差异

标签 r

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

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。 如果有人有任何建议,我将不胜感激。谢谢!

最佳答案

对大数据集使用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

关于r - 在 R 中获取与前一个日期的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13121772/

相关文章:

r - 在哪里可以找到 R session 警告日志?

r - 按列计算唯一值

r - 在 R 列表中查找名称的时间复杂度是多少?

r - 如何使用 R 从多个数据表中提取列的某些值的行?

r - 在 R 包上运行检查时,“"use ‘--force’ to remove the existing ‘INDEX’”消息是什么意思?

r - 如何从R中的矩阵中写出?

r - 在 R 中可视化数据重叠的最佳方式

r - sum 和 + 之间的不同输出

r - tidyr 宽到长,两次重复测量

r - 在 pmap() 或 pwalk() 中为 .l 提供列表参数