R data.table 按条件将价格转换为回报



嗨,我有一个包含以下列的日内数据表:

 date, stock_id, timestamp, price

首先,我添加了键以正确排序:

setkeyv( my_table, c('stock_id','date','timestamp'))

数据如下所示:

     date      timestamp    stock_id      price       
 2011-01-04    1.294128e+12    7          3402.0     
 2011-01-04    1.294129e+12    7          3402.5     
 2011-01-04    1.294129e+12    7          3407.5    

现在我想将stock_price转换为返回和日志返回。

您能否指出一种高效/优雅的方法,无需求助于循环即可在 R 和 data.table 分组中执行此操作?

提前非常感谢,我对 R 很陌生。

巧的是,您已经询问了一些在最新版本(v1.8.1)中使用新功能在R-Forge存储库中使用最容易完成的事情:按组:=

怎么样(未经测试):

my_table[, logret:=c(NA,diff(log(stock_price))), by=stock_name]

要从 R-Forge 安装 v1.8.1 而不从源代码编译,您需要运行 R 2.15.0 或更高版本,然后只需键入:

install.packages("data.table", repos="http://R-Forge.R-project.org")

最新更新