【问题标题】:Cant use pivot wider after grouping with count与计数分组后不能使用更宽的枢轴
【发布时间】:2021-10-10 21:21:25
【问题描述】:

今天,我使用了 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

谁有解决这个问题的办法?

【问题讨论】:

  • 您是否尝试过使用引号的这种小改动? pivot_wider(df, names_from = 'COUNT.x', values_from = 'COUNT.freq')

标签: r dplyr tidyr plyr


【解决方案1】:

问题是count 被应用在summarise 中,导致data.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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 2017-04-09
    • 2018-07-17
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    相关资源
    最近更新 更多