Calcular proporções dentro de subconjuntos de um quadro de dados

Eu estou tentando obter proporções dentro de subconjuntos de um quadro de dados. Por exemplo, neste quadro de dados confeccionado:

DF<-data.frame(category1=rep(c("A","B"),each=9),
    category2=rep(rep(LETTERS[24:26],each=3),2),
     animal=rep(c("dog","cat","mouse"),6),number=sample(18))

Eu gostaria de calcular a proporção de cada um dos três animais para cadacategory1&nbsp;porcategory2&nbsp;combinação (por exemplo, de todos os animais que são "A" e "X", que proporção são os cães?). Comprop.table&nbsp;na coluna 4 do quadro de dados eu posso obter a proporção que cada linha faz da coluna "número" total, mas eu não encontrei uma maneira de fazer isso para subconjuntos com base na categoria 1 e 2. Eu também tentei dividir os dados porcategory1&nbsp;ecategory2&nbsp;usando isso:

splitDF<-split(DF,list(DF$category1,DF$category2))

E eu estava esperando poder então aplicar uma função comprop.table&nbsp;para obter as proporções de cada animal dentro de cada grupo de divisão, mas não consigoprop.table&nbsp;trabalhando porque não consigo especificar em qual coluna de dados aplicar a função dentro dos grupos de divisão. Alguém tem alguma dica? Talvez isso seja possível complyr&nbsp;ou algo similar? Não consigo encontrar nada nos fóruns de ajuda sobre maneiras de obter proporçõesdentro&nbsp;subconjuntos de dados.