Мы конвертируем 'Date' в Date
class, arrange
по 'Date' и получаем mean
из первых 4 'Value', сгруппированных по 'ID'
library(dplyr)
library(lubridate)
df1 %>%
group_by(ID) %>%
arrange(mdy(Date)) %>%
summarise(Value = mean(head(Value, 4)))
# A tibble: 2 x 2
# ID Value
# <chr> <dbl>
#1 aa1 7.75
#2 aa2n 5.25
Или мы можем сделать это с data.table
library(data.table)
setDT(df1)[order(mdy(Date)),.(Value = mean(head(Value, 4))), ID]
# ID Value
#1: aa2n 5.25
#2: aa1 7.75