首页 > 解决方案 > dplyr::count 省略未表示的级别

问题描述

有没有办法强制 dplyr::count 报告计数为零的级别?

>library(dplyr)
>df <- dplyr::data_frame(id = c(1,2,3,4,5,6), condition = c("A", "B","C", "A", "A", "B"))
>df$condition <- factor(df$condition, levels = c("A", "B", "C", "D", "E", "F", "G"))

这是我想要的输出:

>table(df$condition) %>% as_data_frame() %>% dplyr::rename(condition = Var1)
# A tibble: 7 x 2
  condition     n
  <chr>     <int>
1 A         3
2 B         2
3 C         1
4 D         0
5 E         0
6 F         0
7 G         0

但这就是我使用 count 得到的:

>df %>% dplyr::count(condition)
# A tibble: 3 x 2
  condition     n
  <fct>     <int>
1 A         3
2 B         2
3 C         1

谢谢 !

标签: rdplyr

解决方案


您可以使用tidyr::complete来完成缺失的因子水平;这也为您提供了指定如何填充的选项(默认为NA)。

library(dplyr)
library(tidyr)
df %>% count(condition) %>% complete(condition, fill = list(n = 0))
## A tibble: 7 x 2
#  condition     n
#  <fct>     <dbl>
#1 A            3.
#2 B            2.
#3 C            1.
#4 D            0.
#5 E            0.
#6 F            0.
#7 G            0.

推荐阅读