Calcular a média por grupo

Eu tenho um grande quadro de dados semelhante a este:

df <- data.frame(dive=factor(sample(c("dive1","dive2"),10,replace=TRUE)),speed=runif(10))
> df
    dive      speed
1  dive1 0.80668490
2  dive1 0.53349584
3  dive2 0.07571784
4  dive2 0.39518628
5  dive1 0.84557955
6  dive1 0.69121443
7  dive1 0.38124950
8  dive2 0.22536126
9  dive1 0.04704750
10 dive2 0.93561651

Meu objetivo é calcular a média dos valores de uma coluna quando outra coluna for igual a um determinado valor e repetir isso para todos os valores. ou seja, no exemplo acima, eu gostaria de retornar uma média para a colunaspeed para cada valor único da colunadive. Então quandodive==dive1, a média despeed é isso e assim por diante para cada valor dedive.

questionAnswers(3)

yourAnswerToTheQuestion