У меня есть фрейм данных со столбцами A и B, как показано ниже. Я хотел бы рассчитать среднее значение значений в столбце B в скользящем окне. Размер скользящего окна не является постоянным и должен устанавливаться на основе столбца A. т. е. размер окна устанавливается для предельного значения 200 в столбце A. В приведенном ниже примере дается четкое описание размера окна:
A: 10 150 200 220 300 350 400 410 500
B: 0 0 0 1 0 1 1 1 0 mean
[0 0 0] 0
[0 0 1 0 1] 0.4
[0 1 0 1 1] 0.6
[1 0 1 1 1] 0.8
[0 1 1 1 0] 0.6
[1 1 1 0] 0.75
[1 1 0] 0.66
[1 0] 0.5
[0] 0
Output: 0 0.4 0.6 0.8 0.8 0.8 0.8 0.8 0.75
Теперь для каждой строки/координаты в столбце A учитываются все окна, содержащие эту координату, и они должны сохранять наибольшее среднее значение, которое дает результаты, показанные в столбце «вывод».
Я хочу иметь вывод, как показано выше. Вывод должен выглядеть так:
A B Output
10 0 0
150 0 0.4
200 0 0.6
220 1 0.8
300 0 0.8
350 1 0.8
400 1 0.8
410 1 0.8
500 0 0.75
есть аналогичный вопрос в Sliding window in R и
rollapply(B, 2*k-1, function(x) max(rollmean(x, k)), partial = TRUE)
дает решение с k в качестве размера окна. Разница заключается в размере окна, которое не является постоянным в текущем вопросе.
Может ли кто-нибудь предоставить какое-либо решение в R?
A
определяют, какие значенияB
вы хотите взять в среднем. Например, первое значениеA
равно 10, но вы вычисляете среднее из 3 значений. Укажите переменную, которую мы можем использовать (возможно, созданную с помощьюdput(your_data)
). - person Richie Cotton   schedule 18.10.2013