为什么“summarize”会删除一个组?

Jes*_*dle 5 group-by r dplyr summarize

我在玩babynamespkg 。命令group_by有效,但在 后summarize,其中一个组将从组列表中删除。

library(babynames)
babynames[1:10000, ] %>% group_by(year, name) %>% head(1)

# A tibble: 1 x 5
# Groups:   year, name [1]
   year   sex  name     n       prop
  <dbl> <chr> <chr> <int>      <dbl>
1  1880     F  Mary  7065 0.07238433
Run Code Online (Sandbox Code Playgroud)

这很好——两组year, name。但经过总结(正确尊重组)后,该name组被删除。我错过了一个简单的错误吗?

babynames[1:10000, ] %>% 
    group_by(year, name) %>% 
    summarise(n = sum(n)) %>% head(1)

# A tibble: 1 x 3
# Groups:   year [1]
   year  name     n
  <dbl> <chr> <int>
1  1880 Aaron   102
Run Code Online (Sandbox Code Playgroud)

更多信息(如果相关):

R version 3.4.0 (2017-04-21)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.13.2
dplyr_0.7.4
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

文档中记录了该行为,请参阅?summarise “值”部分:

Value 与 同一类的对象.data。将删除一个分组级别。


相反,mutate删除任何分组级别:

:与 同一类的对象.data

  • @Psidom 需要明确的是,我并不是在批评你的回应,我只是说这仍然是一个悬而未决的问题。 (4认同)
  • 该行为已被记录,但它没有回答问题(下降的原因是什么)。 (2认同)
  • ^ 补充一下。我认为“原因”是“因为哈德利想要这样”。文档说“让逐步汇总数据集变得容易”,但它会按照您指定的顺序自动删除组,这是大多数人不会意识到的(除非您注意到代码中的错误或有在文档中看到了这一行)。今后我一定要多加注意。 (2认同)