Idioma apropiado para agregar filas de recuento cero en tidyr / dplyr

Supongamos que tengo algunos datos de conteo que se ven así:

library(tidyr)
library(dplyr)

X.raw <- data.frame(
    x = as.factor(c("A", "A", "A", "B", "B", "B")),
    y = as.factor(c("i", "ii", "ii", "i", "i", "i")),
    z = 1:6)
X.raw
#   x  y z
# 1 A  i 1
# 2 A ii 2
# 3 A ii 3
# 4 B  i 4
# 5 B  i 5
# 6 B  i 6

Me gustaría ordenar y resumir así:

X.tidy <- X.raw %>% group_by(x,y) %>% summarise(count=sum(z))
X.tidy
# Source: local data frame [3 x 3]
# Groups: x
#
#   x  y count
# 1 A  i     1
# 2 A ii     5
# 3 B  i    15

Lo se porx=="B" yy=="ii" Hemos observado recuento de cero, en lugar de un valor perdido. es decir, el trabajador de campo estaba realmente allí, pero como no había un conteo positivo, no se ingresó ninguna fila en los datos sin procesar. Puedo agregar el conteo cero explícitamente haciendo esto:

X.fill <- X.tidy %>% spread(y, count, fill=0) %>% gather(y, count, -x)
X.fill
# Source: local data frame [4 x 3]
# 
#   x  y count
# 1 A  i     1
# 2 B  i    15
# 3 A ii     5
# 4 B ii     0

Pero eso parece una forma indirecta de hacer las cosas. ¿Es un idioma más limpio para esto?

Solo para aclarar: mi código ya hace lo que necesito que haga, usandospread entoncesgatherasí que lo que me interesa es encontrar una ruta más directadentro tidyr ydplyr.

Respuestas a la pregunta(5)

Su respuesta a la pregunta