Я хочу рассчитать скользящие средние для перекрывающихся поколений. Например, значение 1915 года должно включать среднее значение 1900-1930 годов, значение 1916 года среднее значение 1901-1931 годов и так далее. Я написал следующую функцию и цикл ниже:
calc_mean = function(data_frame, yr, time_generation){
df_MM = data_frame %>%
filter(yr >= year & yr < year + time_generation) %>%
summarize(school_mean = mean(school, na.rm = TRUE)) %>%
mutate(year = year + gen_interval/2)
return(df_MM)
}
time_generation = 30;
# Preallocation
df_mean = data.frame()
for(year in seq(from = 1900, to = 1960, by = 1)){
df_MM = calc_mean(df_school, yr = year, time_generation)
df_mean = rbind(df_mean, df_MM)
}
remove(df_MM)
Однако, если я перепроверю это для небольшой выборки, я получу неправильные значения. Вы видите мою ошибку?
Позвольте мне дать вам небольшой образец для самостоятельной проверки:
set.seed(2)
df_school <- data.frame(year = 1900:1960, val = sort(runif(61)))