Khi sử dụng summarise
với plyr
's ddply
chức năng, danh mục sản phẩm nào được giảm theo mặc định. Bạn có thể thay đổi hành vi này bằng cách thêm .drop = FALSE
. Tuy nhiên, điều này không hoạt động khi sử dụng summarise
với dplyr
. Có cách nào khác để giữ các danh mục trống trong kết quả không?
Đây là một ví dụ với dữ liệu giả.
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
Không chính xác những gì tôi đã hy vọng. Có dplyr
phương pháp nào để đạt được kết quả tương tự như .drop=FALSE
trong plyr
không?