将“移位”功能与计算相结合

时间:2018-08-20 11:19:23

标签: r data.table shift

我有以下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][ ]

产生错误:

  

“ value / shift(value,1:2)中的错误:二进制运算符的非数字参数”

1 个答案:

答案 0 :(得分:0)

您可以使用

dt[, paste("px.min.", 1:2, sep = "", "d") := 
       lapply(shift(value, 1:2), function(x) value/x), by = variable][ ]

关键是您需要逐行进行除法运算,lapply将为您完成