У меня есть набор данных с несколькими сайтами и годами выборки с оценкой за каждый день года. Например, SiteA содержит данные за 40 лет со значением для каждого дня, а год выборки определяется как Sampling.Year. Чтобы сбить с толку, наш год выборки - июль-июнь, поэтому мы принимаем форму 2016-2017. Например:
SiteName Sampling.Year Date Score
A 2015-2016 1
A 2015-2016 5
A 2015-2016 2
A 2016-2017 3
A 2016-2017 12
A 2016-2017 6
B 2015-2016 9
B 2015-2016 2
B 2015-2016 1
B 2016-2017 4
B 2016-2017 1
B 2016-2017 7
Я хочу применить скользящее 182-дневное среднее к этим данным, чтобы найти максимальную (182-дневную среднюю) оценку для каждой комбинации сайт / выборка.Год. Результат будет, например:
Site Sampling.Year MaxAve StartDate
A 2016-2017 7.5 01/10/2016
A 2017-2018 6.0 12/12/2017
B 2016-2017 2.3 13/11/2016
B 2017-2018 4.2 09/09/2017
Я сохранил здесь образец набора данных: Образец данных. Я хочу использовать код цикла (потому что я новичок и не уверен в лучшем способе) в соответствии с этим, но это группировка сайтов и лет, которые я нахожу сложными. В идеале я бы хотел, чтобы скользящее среднее можно было экспортировать как новый фрейм данных с датой начала и окончания (или, по крайней мере, датой начала) для каждого окна, чтобы мы могли проверить ее на соответствие погодным условиям в то время.
Moving_Average_Function <- function(arr, n=182){
res = arr
for(i in n:length(arr)){
res[i] = mean(arr[(i-n+1):i])
}
res
}
заранее спасибо