【发布时间】:2023-03-17 05:20:02
【问题描述】:
我有以下data.table:
Dates variable value
1: 1985/01/02 SLB UN Equity 4.5192
2: 1985/01/03 SLB UN Equity 4.3111
3: 1985/01/04 SLB UN Equity 4.2963
4: 1985/01/07 SLB UN Equity 4.2368
5: 1985/01/08 SLB UN Equity 4.1327
---
我想对值列执行“n”次“移位”,然后通过将值列除以每个“移位”列来计算回报。我已经使用以下方法管理了第一部分:
dt[, paste("px.min.", 1:2, sep = "", "d") := shift(value, 1:2), by = variable][]
结果是:
Dates variable value px.min.1d px.min.2d
1: 1985/01/02 SLB UN Equity 4.5192 NA NA
2: 1985/01/03 SLB UN Equity 4.3111 4.5192 NA
3: 1985/01/04 SLB UN Equity 4.2963 4.3111 4.5192
4: 1985/01/07 SLB UN Equity 4.2368 4.2963 4.3111
5: 1985/01/08 SLB UN Equity 4.1327 4.2368 4.2963
---
第二部分导致了问题。
dt.px.melt[, paste("px.min.", 1:2, sep = "", "d") := value/shift(value, 1:2), by = variable][ ]
产生错误:
“值/移位错误(值,1:2):二元运算符的非数字参数”
【问题讨论】:
-
如果您在
dput中包含一些虚拟数据,解决您的问题会更容易。 -
我认为
dt.px.melt应该只是dt? -
更正我的歉意。
标签: r data.table shift