使用
以下是一个使用虚假数据的示例。
plyr
中的ddply
函数和summarise
时,默认情况下会删除空类别。您可以通过添加.drop = FALSE
来更改此行为。但是,当使用dplyr
中的summarise
时,这种方法不起作用。还有其他方法可以在结果中保留空类别吗?以下是一个使用虚假数据的示例。
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
的方法可以实现与 plyr
中的 .drop = FALSE
相同的结果?