в DataFrames вы можете использовать groupby
с combine
следующим образом:
julia> using Statistics, Dates, Pipe;
julia> df = DataFrame(date = range(Date(2000, 01, 01), Date(2020, 01, 01), step = Day(1)));
julia> df.val = rand(nrow(df));
julia> @pipe df |>
transform(_,
:date => ByRow(year) => :year,
:date => ByRow(week) => :week # 1:52
) |>
groupby(_, [:week, :year]) |>
transform(_, :val => mean)
Если вам нужна скользящая средняя, вы можете использовать следующую функцию
julia> function lagged_mean(x, b)
map(1:length(x)) do i
i < b ? missing : mean(@view x[i-b+1:i])
end
end
julia> lagged_mean(df.val, 7)