cumsum por grupo

Suponha que os dados se pareçam

group1 group2 num
A      sg     1
A      sh     2
A      sg     4
B      at     3
B      al     7

a <- cumsum(data[,"num"]) # 1 3 7 10 17

Eu preciso de algo acumulado por grupos. Na realidade, tenho várias colunas como indicadores de agrupamento. Quero obter a soma acumulada pelo subgrupo que defino.

Por exemplo

Se eu agrupar porgroup1 somente, então a saída deve ser

group1 sum
A      1
A      3
A      7
B      3
B      10

Se eu agrupar por duas variáveisgroup1,group2 então a saída é

group1 group2 sum
A      sg     1
A      sh     2
A      sg     5
B      at     3
B      al     7

questionAnswers(2)

yourAnswerToTheQuestion