Чтобы получить минимум за месяцы и годы, вы можете сделать (это включает dplyr
):
df %>%
group_by(Date = format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y")) %>%
summarise_all(min)
Date Marks
<chr> <int>
1 01-2019 12
2 02-2019 11
И то же самое с base R
:
aggregate(Marks ~ cbind(Date = format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y")),
FUN = min,
data = df)
ЕслиВы хотите вернуть также соответствующую дату:
df %>%
group_by(month_year = format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y")) %>%
slice(which.min(Marks)) %>%
ungroup() %>%
select(-month_year)
Date Marks
<chr> <int>
1 22-01-2019 12
2 20-02-2019 11
И то же самое с base R
:
df[df$Marks == with(df, ave(Marks, format(as.Date(Date, format = "%d-%m-%Y"), "%m-%Y"),
FUN = function(x) x[which.min(x)])), ]