r - R dplyr - 使用 dplyr 过滤每个组中的唯一行
问题描述
我的数据看起来像这样
id col2 col3 flag val
1 a q
1 a w 1
1 b r
2 c q 1 5
2 c q
2 c q 1 6
我只想要这些行
id col2 col3 flag val
1 a q
1 a w 1
1 b r
2 c q 1 5
基本上前 3 列确定 a group
。对于每个group
,如果只有 1 个观察值/行,则无论 的值flag
是什么,都保留该行。如果每个group
都有超过 1 个观察/行,则保留第一行等于 1。我想知道在 R 中是否有任何方法可以使用group
dplyrflag
解决方案
dplyr::distinct
正是在这一点上有所帮助,并且该.keep_all
标志将其他列保留在您的输出中。
my_data %>%
distinct(id, col2, col3, .keep_all = TRUE)
结果
# A tibble: 4 x 5
id col2 col3 flag val
<int> <chr> <chr> <int> <int>
1 1 a q NA NA
2 1 a w 1 NA
3 1 b r NA NA
4 2 c q 1 5
数据
my_data <- tibble::tribble(
~id, ~col2, ~col3, ~flag, ~val,
1L, "a", "q", NA, NA,
1L, "a", "w", 1L, NA,
1L, "b", "r", NA, NA,
2L, "c", "q", 1L, 5L,
2L, "c", "q", NA, NA,
2L, "c", "q", 1L, 6L
)
推荐阅读
- javascript - 输入压力机有什么解决方案吗?
- xamarin - 当我创建要在 Xamarin Forms 代码中使用的模板对象时,有没有办法可以使用 C# fluent 和 Build 来创建模板?
- node.js - 前端到后端请求似乎是错误的
- flutter - 用于 Dart/Flutter 的 C# 类 DataSet 类?
- javascript - 如何过滤对象数组并使用打字稿返回对象数组
- awk - 基于图案的打印线
- python - 有条件地格式化 pandas to_html 的单元格
- oracle - 如何允许用户在交互式网格中添加列并设置限制?
- typescript - 问题:对于 multiLineSeries 图表,如果其中一个系列没有数据,则不会绘制整个图表
- mongodb - MongoDB:一个只读辅助节点指向两个主节点