Одно из возможных решений:
library(magrittr)
start_range <- df$MS[df$MS < max(df$MS)-15000]
lapply(start_range,function(t){
data.frame(MS = mean(df$MS[df$MS %between% c(t,t+15000)]),
HR = mean(df$HR[df$MS %between% c(t,t+15000)]))
}) %>% Reduce(rbind,.)
MS HR
1 43218.00 86.18182
2 43907.82 86.18182
3 44603.55 86.18182
4 44948.29 86.28571
5 45673.38 86.33333
Я добавил несколько очков к вашим данным (у меня было только два балла с данными, которые вы предоставили):
MS <- c(36148, 36753,37364,38062,38737,39580,40029,40387,41208,42006,42796, 43533,44274,44988,45696,46398,47079,47742,48429,49135,49861,50591,51324,52059,53289,54424)
HR <- c(84,84,84,84,84,96,84,84,96,84,84,96,84,84,96,84,84,84,84,84,84,84,84,84,85,88)
df <- data.frame(MS, HR)
Идея в том, чтобы рассчитайте для каждого значения MS
среднее значение HR
и время MS
всех точек, имеющих время между этим значением (t
в конце) и 15 с после. Я ограничиваю это для диапазона, в котором у меня есть значения, охватывающие 15 с: вектор start_range
.