dplyr summaze: эквивалент «.drop = FALSE» для сохранения групп с нулевой длиной в выходных данных

Когда используешьsummarise сplyr«sddply функция, пустые категории удаляются по умолчанию. Вы можете изменить это поведение, добавив.drop = FALSE, Тем не менее, это не работает при использованииsummarise сdplyr, Есть ли другой способ сохранить пустые категории в результате?

Вот пример с поддельными данными.

library(dplyr)

df = data.frame(a=rep(1:3,4), b=rep(1:2,6))

# Now add an extra level to df$b that has no corresponding value in df$a
df$b = factor(df$b, levels=1:3)

# Summarise with plyr, keeping categories with a count of zero
plyr::ddply(df, "b", summarise, count_a=length(a), .drop=FALSE)

  b    count_a
1 1    6
2 2    6
3 3    0

# Now try it with dplyr
df %.%
  group_by(b) %.%
  summarise(count_a=length(a), .drop=FALSE)

  b     count_a .drop
1 1     6       FALSE
2 2     6       FALSE

Не совсем то, на что я надеялся. Есть лиdplyr метод достижения того же результата, что и.drop=FALSE вplyr?

Ответы на вопрос(4)

Ваш ответ на вопрос