【发布时间】:2014-02-20 19:15:19
【问题描述】:
我确定我遗漏了一些简单的东西,但是如何使用 R 中的 data.tables 计算每日回报?
假设我有一个 data.table,例如:
DT <- data.table(ticker=rep(letters,each=5), priceA=runif(5*26^2), priceB=runif(5*26^2))
如何形成一个新列,其中包含每个代码的相应价格回报?
我所说的回报是指正常的百分比回报。也就是说,股票代码 a 的价格 A 的第二个值减去同一股票代码的前一个值,然后除以前一个。
鉴于列代码、价格A 和价格B 的示例,我应该得到列returnA,如下所示:
ticker priceA priceB returnsA
1: a 0.63519775 0.04784728
2: a 0.01530738 0.34917328 -0.97590
3: a 0.28601406 0.12307475 17.68472
4: a 0.77851212 0.47829863 1.721937
5: a 0.84078779 0.23491432 0.079993
另外,我如何使用set()而不是:=来做某事
DT[, newprice := priceA * priceB]
?
谢谢! :)
【问题讨论】:
-
对于
set,也许是DT[,newprice:=NA]; set(DT,j=4L,value=DT[['priceA']]*DT[['priceB']])你还没有定义“返回”。 -
感谢您的回答,这正是我想要的 set()。我更新了我的问题并添加了一个示例。
标签: r data.table