If it works, it works. There are lots of ways to achieve the same results in R. I do notice that in your question you wanted the max value, but in your code you use min. Otherwise, your code does the job.
The benefit of using aggregate is that it extends easily to groups defined by multiple dimensions/variables, rather than just one, and it harnesses the power of formulas so the code is less cluttered with repeating the name of the data set and variables.
For example, if you wanted to find the max for value6 across groups defined by multiple dimensions, this is easily done with aggregate:
aggregate(value6 ~ value1 + value2, data = ds, max)