Я использовал фиктивные данные для выполнения задачи.
charges <- structure(list(Task.name = c("a", "b", "c", "d", "a", "b", "r",
"e", "t", "c", "d", "a", "e", "t", "y", "c", "b", "r", "w", "e",
"a", "c", "a"), Task.rate = c(291L, 299L, 142L, 145L, 143L, 251L,
465L, 61L, 326L, 412L, 257L, 330L, 185L, 342L, 346L, 497L, 143L,
315L, 206L, 167L, 492L, 397L, 288L)), class = "data.frame", row.names = c(NA,
-23L))
Answer :-
f1 <- function(x) c(Max = max(x), Min = min(x))
f2<- do.call(data.frame, aggregate(Task.rate~Task.name, charges, f1))
Используется база R