Я пытаюсь вычислить средневзвешенные значения для различных столбцов в data.table с rollapply()
и weighted.mean()
следующим образом:
DT <- data.table(id = rep(c(1,2), each = 5),
var1 = 1:10,
var2 = 11:20)
col_names <- c('var1', 'var2')
DT[, (col_names) := lapply(.SD,
function(x) rollapplyr(x,
width = 3,
weighted.mean,
w = c(0.2, 0.3, 0.5),
align = 'right',
partial = TRUE,
na.rm = TRUE)),
by = id,
.SDcols = col_names]
Однако я получаю сообщение об ошибке:
Error in weighted.mean.default(data[replace(posns, !ix, 0)], ...) :
'x' and 'w' must have the same length
Это потому, что .SD - это таблица данных, а weighted.mean()
не работает с таблицами данных?
Есть ли способ заставить его работать?