Grupo R por, contando valores não NA

Eu tenho um quadro de dados com uma dispersão de NA

toy_df
# Y  X1 X2 Label
# 5  3  3  A
# 3  NA 2  B
# 3  NA NA C
# 2  NA 6  B

Quero agrupar isso pelo campo label e contar quantos valores não NA existem em cada variável para cada label.

desired output:
# Label Y  X1 X2
# A     1  1  1
# B     2  0  2
# C     1  0  0

Eu fiz isso usando loops no momento, mas é lento e desarrumado e tenho certeza de que há uma maneira melhor.

O agregado parece chegar a meio caminho, mas inclui NAs na contagem.

aggregate(toy_df, list(toy_df$label), FUN=length)

Alguma idéia apreciada ...

questionAnswers(3)

yourAnswerToTheQuestion