Я пытаюсь рассчитать скользящее среднее (последние 20 периодов) доходности акций по определенному идентификатору (называемому PERMNO).Во-первых, я просто попытался создать скользящее среднее.Я работал над этим с кодом:
CRSP_dt[, rolltest1 := rollmeanr(Return, 20, na.rm = TRUE, fill = NA)]
, который не работал.Однако, когда я пытаюсь сделать это с помощью этого кода:
CRSP_dt[, rolltest2 := rollapplyr(Return, 20, mean, na.rm = TRUE, fill = NA)]
, это на самом деле работает, так что я не совсем уверен, почему?
Во-вторых, я попытался вычислить скользящее среднее по PERMNO,поэтому я добавил добавление «по»:
CRSP_dt[, rolltest2 := rollapplyr(Return, 10, mean, na.rm = TRUE, fill = NA),
by = PERMNO]
Теперь возвращается ошибка «Ошибка в [.data.table
(CRSP_dt, :=
(rolltest2, rollapplyr (Return,: Type of RHS ('логический ') должен соответствовать LHS (' double '). Чтобы проверить и принудительно повлиять на производительность слишком быстро для самых быстрых случаев. Либо измените тип целевого столбца, либо приведите RHS к: = себе (например, используя 1L вместо1) ". С тех пор я пытался также преобразовать целевой столбец в" Double ", используя решение из этого решения для оверклокинга , в результате чего:
CRSP_dt[, rolltest2:= as.numeric(rolltest2)][, rolltest2 := rollapplyr(Return, 10, mean, na.rm = TRUE, fill = NA),
by = PERMNO]
К сожалению, он по-прежнему выдает тот же код ошибки, поэтому я не уверен, что делать дальше.