用计数分组后不能使用更宽的数据透视表

Cant use pivot wider after grouping with count

今天,我使用了 dplyr 包中的 count() group_by()summarise()。这是代码:

dplyr::group_by(QUARTER, PROVINCE, DATE) %>%
  dplyr::summarise(COUNT = count(EDUCATION)) %>%
ungroup()

这是我的 df 在执行上面的代码后的样子:

Quarter    PROVINCE      DATE        COUNT.x        COUNT.freq

2020Q1   New-York       2020-01-07     1              30
2021Q1   New-York       2020-01-07     2              21
2020Q1   New-York       2020-01-07     3              55
2021Q1   New-York       2020-01-07     4              8

注意:COUNT.xCOUNT.freq 不是我自己创建的!现在,我试图将 COUNT.x 作为列,将 COUNT.freq 作为值。这意味着 pivot_wider() 将是这里的解决方案。但是,在尝试以下操作后:

pivot_wider(df, names_from = COUNT.x, values_from = COUNT.freq)

它说 COUNT.xCOUNT.freq 不存在:

Error: Can't subset columns that don't exist.
x Column `COUNT.x` doesn't exist

此外,检查 names(df) 给我:

[1] "QUARTER"  "PROVINCE" "DATE" "COUNT"  

不包括COUNT.xCOUNT.freq

有人解决这个问题吗?

问题是 count 正在 summarise 中应用,导致数据。frame/tibble 列。它应该在外面,即

dplyr::count(df, QUARTER, PROVINCE, DATE, EDUCATION)

如果我们使用 OP 的代码,则它不是常规的 data.frame 列。我们需要重新调用 data.frame 来展平列

out <- df %>% dplyr::group_by(QUARTER, PROVINCE, DATE) %>%
  dplyr::summarise(COUNT = count(EDUCATION)) %>%
ungroup()
out1 <- do.call(data.frame, out)