【问题标题】:dplyr::count omits unrepresented levels [duplicate]dplyr::count 省略未表示的级别 [重复]
【发布时间】:2019-01-12 09:52:59
【问题描述】:

有没有办法强制 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

谢谢!

【问题讨论】:

  • 您可以使用 forcats 包中的fct_count() 获得预期结果。在你的情况下,你输入fct_count(df$condition)

标签: r dplyr


【解决方案1】:

您可以使用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.

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2012-07-31
    • 2017-01-21
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多