当我在R中使用“by”时如何使用以前的信息?

时间:2013-09-14 20:24:10

标签: r data.table forex

我有一个来自外汇市场的数据(mydt),由data.table保存:

datetime|side(0=Bid,1=Ask)| distance(1:best price, 2: 2nd best)| price

2008/01/28,09:11:28.000,0,1,1.6066
2008/01/28,09:11:28.000,0,2,1.6065
2008/01/28,09:11:28.000,1,1,1.6068
2008/01/28,09:11:28.000,1,2,1.6069

2008/01/28,09:11:29.000,0,1,1.6067
2008/01/28,09:11:29.000,0,2,1.6066

2008/01/28,09:11:30.000,0,1,1.6065
2008/01/28,09:11:30.000,0,2,1.6064
2008/01/28,09:11:30.000,1,1,1.6066
2008/01/28,09:11:30.000,1,2,1.6067

我想在每个时间块中计算spread = minAsk-maxBid。通常的方法是写:

mydt[,min(price[side==1]) - max(price[side==0]),by=datetime]

但是,此规则总结了数据:如果一方没有变化,则数据中不会有记录。这意味着比较块1和块2,这部分没有变化,也没有记录:

2008/01/28,09:11:28.000,1,1,1.6068
2008/01/28,09:11:28.000,1,2,1.6069

我想逐块去计算一些变量(点差或加权平均价格),但有时我需要前一个块的信息(因为这条规则)。我怎么能这样做?

0 个答案:

没有答案