r - 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]
解决方案
这很可能是由于回收。它出现在许多功能中
data.frame(e = 1, b = c(2, 4), c = c(2, 3, 2, 4))
在这里,1 和 'b' 值的 e 值被回收。可能在组属性中,只有当有一个唯一值时才会发生回收
推荐阅读
- python - 当我从同一个函数中获取键和值时,使用字典理解构建一个字典
- scikit-learn - 当我在 Google Colab 中安装旧版本的 scikit-learn 时,它仍然会导入最新版本
- charts - 在 Google Charts 中动态设置 visibleInLegend
- c++ - 如何在 C++ 中使用十六进制信息创建 MIDI 文件
- javascript - 使用模块级 const 创建单例 - 打字稿
- javascript - 找不到“未定义”的样式
- r - 更新后恢复 R 包的优雅方法
- hdf5 - 删除表不会释放 pytables 中的磁盘空间
- sql-server - 在 SQL Server 和 PostgreSQL 中兼容的递归 CTE
- react-native - 在反应功能组件中反应本机表单电子邮件和密码验证