Я пытаюсь продублировать то, что вы будете делать с функцией AVERAGEIFS в Excel в моем наборе данных:
EG_df <- data.frame(id = c("red_blue", "white_blue", "red_yellow","white_yellow", "brown_blue", "brown_yellow"),
StartDate = as.Date(c('2019-1-1','2019-3-1','2019-7-1','2018-1-1','2018-3-1','2018-7-1')),
EndDate = as.Date(c('2019-6-1','2019-12-1','2019-8-1','2018-1-1','2018-3-1','2018-7-1')),
avg_Value = NA
)
source <- data.frame(source.id = c("red_blue", "red_blue", "red_blue","brown_yellow", "brown_yellow", "brown_yellow"),
source.Date = as.Date(c('2019-1-1','2019-2-1','2019-3-1','2018-7-1','2018-8-1','2018-9-1')),
source.Value = c(22,56,32,31,14,7)
)
Логика мне нужно заполнить EG.df$avg_Value
:
Для каждой строки в EG_df
вернуть среднее значение source.value
, когда source.Date
находится между StartDate
и EndDate
.
Формула Excel, для уточнения:
= AVERAGEIFS (source.value, source.id, id, source.Date, "> =" & StartDate, source.Date, "> =" & EndDate)
Любая помощь будет принята с благодарностью!