У меня есть цикл ниже, который назначает два новых столбца таблице данных, используя данные за последние 21 день с 10 выборками в день. Это работает, но очень неэффективно, и мне нужна помощь в векторизации движущегося подмножества. У меня есть ощущение, что здесь задействована функция «применить», но я не уверен, как работать с непостоянным подмножеством. Ниже мой цикл: я начинаю с присвоения нулей новым столбцам, потому что я считаю, что изменение значений на месте происходит быстрее, чем добавление новых значений на каждой итерации.
data$up <- 0
data$down <- 0
for (i in ((21*10)+1): nrow(data)) {
sub <- subset(data, data$date[i-(21*10)] < data$date & data$date < data$date[i])
data$up[i] <- mean(sub$ratio) + 2.25*sd(sub$ratio)
data$down[i] <- mean(sub$ratio) - 2.25*sd(sub$ratio)
}
И здесь - это образцы данных и мой ожидаемый результат. Спасибо вам за помощь!
dput
для отображения данных - person akrun   schedule 19.06.2017