r - 如何根据 2 列中的值以及 R 中另一列的分组来查找重复项?
问题描述
我有一个包含 3 列的数据集:ID、值 a 和值 b。我想根据 ID 列中的值对数据集进行分组,然后识别在不同分组之间的值 a 和 b 列中具有相同数据的重复项。
我知道我可以使用 dplyr 包和数据 %>% group_by (ID) 根据 ID 列对我的数据集进行分组。我也知道我可以使用 data[duplicated(data[,2:3]),] 返回第 2 行(值 a)和第 3 行(值 b)中具有重复数据的所有行。
但是,我想要一个只能在不同 ID 组之间找到重复项的函数,而不仅仅是在整个数据集中找到重复项。我试过组合 group_by 和 duplicated,但它没有返回正确的结果。哪个函数会这样做?
解决方案
您是否想返回有点不清楚:
- 只有不同的行
- 重复行的单个示例
- 所有重复的行
所以这里有一些选择:
library(dplyr)
library(readr)
"ID,a,b
1, 1, 1
1, 1, 1
1, 1, 2
2, 1, 1
2, 1, 2" %>%
read_csv() -> exp_dat
# return only distinct rows
exp_dat %>%
distinct(ID, a, b)
# # A tibble: 4 x 3
# ID a b
# <dbl> <dbl> <dbl>
# 1 1 1 1
# 2 1 1 2
# 3 2 1 1
# 4 2 1 2
# return single examples of duplicated rows
exp_dat %>%
group_by(ID, a, b) %>%
count() %>%
filter(n > 1) %>%
ungroup() %>%
select(-n)
# # A tibble: 1 x 3
# ID a b
# <dbl> <dbl> <dbl>
# 1 1 1 1
# return all duplicated rows
exp_dat %>%
group_by(ID, a, b) %>%
add_count() %>%
filter(n > 1) %>%
ungroup() %>%
select(-n)
# # A tibble: 2 x 3
# ID a b
# <dbl> <dbl> <dbl>
# 1 1 1 1
# 2 1 1 1
推荐阅读
- jenkins - Jenkins 管道通过代码配置选项
- c# - 如何在 C# 中创建属于 Domain Admins 组的 AD 用户
- c - 如何在自定义系统调用中打开现有文件并写入
- javascript - 如何将流类型转换为 js 对象?
- react-native - 使用 Apollo + React Native Query 获取新项目后,无限列表不会重新渲染
- c# - 抽象和继承有什么区别?
- assembly - 英特尔的 asm 文档中的“未定义”是什么意思?FST 对 C0、C2、C3 的影响
- excel - Groupby 的 Row_Number 查询
- leaflet - 如何在传单中添加 maidengrid 叠加层
- javascript - JSX 中的 lambda 是如何工作的?