Как изменить тип целевого столбца для функции скользящего среднего - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь рассчитать скользящее среднее (последние 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]

К сожалению, он по-прежнему выдает тот же код ошибки, поэтому я не уверен, что делать дальше.

...