如何更改滚动均值函数的目标列类型

时间:2018-06-04 12:53:40

标签: r data.table zoo

我试图通过某个ID(称为PERMNO)来计算股票回报的滚动均值(最近20个周期)。首先,我只是试图创造滚动的意思。我使用这段代码进行了研究:

CRSP_dt[, rolltest1 := rollmeanr(Return, 20, na.rm = TRUE, fill = NA)]

哪个不起作用。但是,当我尝试使用此代码时:

CRSP_dt[, rolltest2 := rollapplyr(Return, 20, mean, na.rm = TRUE, fill = NA)]

它确实有效,所以我不完全确定,为什么?

其次,我试图通过PERMNO计算滚动平均值,所以我添加了" by"此外:

CRSP_dt[, rolltest2 := rollapplyr(Return, 10, mean, na.rm = TRUE, fill = NA),
    by = PERMNO]

现在,它在[.data.table中返回错误"错误(CRSP_dt ,, :=(rolltest2,rollapplyr(返回,:   RHS的类型('逻辑')必须与LHS匹配(' double')。对于最快的情况,检查和强制会对性能产生太大影响。要么改变目标列的类型,要么强制RHS:=你自己(例如通过使用1L而不是1)"。 从那时起,我一直在尝试将目标列转换为" Double"同样,使用this overstack solution中的解决方案,导致:

CRSP_dt[, rolltest2:= as.numeric(rolltest2)][, rolltest2 := rollapplyr(Return, 10, mean, na.rm = TRUE, fill = NA),
    by = PERMNO]

不幸的是,它仍然提供相同的错误代码,所以我不确定,如何从这里开始。

0 个答案:

没有答案