You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言duplicated()函数查找重复记录的问题

解决R语言中获取数据框全部重复记录的问题

嘿,我懂你为啥疑惑啦!duplicated()函数的默认行为确实有点“藏一手”——它只会标记每组重复记录里除了第一次出现之外的后续行,所以你才只看到了部分重复项。要把所有属于重复组的行都揪出来,咱们可以用下面两种方法:

方法一:结合正向和反向重复标记

我们可以同时用duplicated()的默认模式和fromLast=TRUE模式,把两个结果用逻辑或(|)连接,这样就能覆盖所有重复组里的行:

# 获取所有重复行的索引
dup_indices <- duplicated(exdata) | duplicated(exdata, fromLast = TRUE)
# 筛选出所有重复记录
exdata[dup_indices, ]

运行这个代码后,你会得到所有重复的行:

a b
1  1 1
2  1 1
7  3 3
9  3 3
10 4 9
11 4 9
12 4 9

原理很简单:duplicated(exdata)标记“不是第一次出现”的重复行,duplicated(exdata, fromLast = TRUE)标记“不是最后一次出现”的重复行,两者取或之后,所有属于重复组的行都会被选中。

方法二:用dplyr包的分组筛选(tidyverse风格)

如果你习惯用tidyverse工具链,也可以用dplyr的分组筛选功能,直接找出每组(按a和b分组)中行数大于1的记录:

library(dplyr)

exdata %>%
  group_by(a, b) %>%
  filter(n() > 1) %>%
  ungroup()

这个方法更直观,分组后只要该组的记录数超过1,就说明是重复组,直接把整个组的行都保留下来。

内容的提问来源于stack exchange,提问作者Lovetoken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:12:09