Resumindo por porcentagem de subgrupo em R

Eu tenho um conjunto de dados como este:

df = data.frame(group = c(rep('A',4), rep('B',3)),
                subgroup = c('a', 'b', 'c', 'd', 'a', 'b', 'c'),
                value = c(1,4,2,1,1,2,3))


group | subgroup | value
------------------------
  A   |    a     |  1
  A   |    b     |  4
  A   |    c     |  2
  A   |    d     |  1
  B   |    a     |  1
  B   |    b     |  2
  B   |    c     |  3

O que eu quero é obter a porcentagem dos valores de cada subgrupo dentro de cada grupo, ou seja, a saída deve ser:

group | subgroup | percent
------------------------
  A   |    a     |  0.125
  A   |    b     |  0.500
  A   |    c     |  0.250
  A   |    d     |  0.125
  B   |    a     |  0.167
  B   |    b     |  0.333
  B   |    c     |  0.500

Exemplo para o grupo A, subgrupo A: o valor foi 1, a soma de todo o grupo A é 8 (a = 1, b = 4, c = 2, d = 1) - portanto 1/8 = 0,125

Até agora, só encontrei agregados bastante simples, comoesta, mas não consigo descobrir como fazer a parte "dividir por uma soma dentro de um subgrupo".

questionAnswers(1)

yourAnswerToTheQuestion