5
Вот MWE.Неоконченное соединение, затем подведите итоги по группе
dta <- data.table(id=rep(1:2, each=5), seq=rep(1:5, 2), val=1:10)
dtb <- data.table(id=c(1, 1, 2, 2), fil=c(2, 3, 3, 4))
dtc <- data.table(id=c(1, 1, 2, 2), mval=rep(0, 4))
for (ind in 1:4) dtc$mval[ind] <- mean(dta$val [dta$id == dtb$id[ind] & dta$seq < dtb$fil[ind]])
dtc
# id mval
# 1: 1 1.0
# 2: 1 1.5
# 3: 2 6.5
# 4: 2 7.0
dtc должно иметь такое же количество строк, что и dtb. Для каждой строки() ind
в ДТК,
dtc$id[ind]
=dtb$id[ind]
.dtc$mval[ind]
=mean(dta$val[x])
, где x -dta$id == dtb$id[ind] & dta$seq < dtb$fil[ind]
.
Мои данные. Таблицы чрезвычайно велики. Следовательно, я ищу способ достичь вышеуказанного с минимальным объемом памяти. Я думал о соединении без equi, а затем о суммировании, но я не могу заставить его работать. Отсюда и название вопроса.
Поблагодарили бы за любую помощь, спасибо!