【问题标题】:R data.table convert price to returns by criteriaR data.table 按标准将价格转换为回报
【发布时间】:2012-07-06 13:28:57
【问题描述】:

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

 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 很陌生。

【问题讨论】:

    标签: r group-by data.table


    【解决方案1】:

    碰巧的是,您使用新功能在 R-Forge 存储库的最新版本 (v1.8.1) 中提出了最容易完成的问题::= by group。

    怎么样(未经测试):

    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")
    

    【讨论】:

    • 改成 : dt[, logret:=c(NA,diff(log(stock_price))), by=list(stock_id,date)] 现在可以正常使用了,谢谢大家的帮助。非常优雅和快速的解决方案。这就是为什么 R 很棒!!!
    猜你喜欢
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2023-03-23
    • 1970-01-01
    • 2020-02-06
    • 2016-03-13
    相关资源
    最近更新 更多