首页 > 解决方案 > dplyr 在显示“groups”属性时如何处理空组?

问题描述

以 dplyr 测试为例:

df <- data.frame(
  e = 1,
  f = factor(c(1, 1, 2, 2), levels = 1:3),
  g = c(1, 1, 2, 2),
  x = c(1, 2, 1, 4)
) %>%
  group_by(e, f, g, .drop = FALSE)

我不太明白为什么或如何"groups"定义属性

attr(df, "groups")
# # A tibble: 3 x 4
#       e f         g       .rows
#   <dbl> <fct> <dbl> <list<int>>
# 1     1 1         1         [2]
# 2     1 2         2         [2]
# 3     1 3        NA         [0]

第三行对我来说没有任何意义,它不是原始数据中的有效组。我原以为结果会是:

# # A tibble: 3 x 4
#       e f         g       .rows
#   <dbl> <fct> <dbl> <list<int>>
# 1     1 1         1         [2]
# 2     1 2         2         [2]
# 3    NA 3        NA         [0]

标签: rdplyr

解决方案


这很可能是由于回收。它出现在许多功能中

 data.frame(e = 1, b = c(2, 4), c = c(2, 3, 2, 4))

在这里,1 和 'b' 值的 e 值被回收。可能在组属性中,只有当有一个唯一值时才会发生回收


推荐阅读