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 porcategory2 combinação (por exemplo, de todos os animais que são "A" e "X", que proporção são os cães?). Comprop.table 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 ecategory2 usando isso:

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

E eu estava esperando poder então aplicar uma função comprop.table para obter as proporções de cada animal dentro de cada grupo de divisão, mas não consigoprop.table 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 ou algo similar? Não consigo encontrar nada nos fóruns de ajuda sobre maneiras de obter proporçõesdentro subconjuntos de dados.

questionAnswers(2)

yourAnswerToTheQuestion