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

如何在R data.table中返回按Year和Amount分组的全部重复行?

解决方法

在data.table里要提取所有同年份且金额相同的条目,你之前用duplicated()只能拿到重复组里的后续行,想要全量重复组的话,有两种常用方法:

方法一:分组筛选(推荐,效率更高)

利用data.table的分组特性,按Year和Amount分组后,只保留组内行数大于1的所有行:

DT[, if (.N > 1) .SD, by = c("Year", "Amount")]
  • .N是当前组的行数,判断.N > 1就表示这组是重复的
  • .SD代表当前组的所有列数据,直接返回整个组的内容

方法二:结合双向duplicated

通过两次duplicated()分别标记正向和反向的重复行,取并集就能拿到所有重复组的条目:

DT[duplicated(DT, by = c("Year", "Amount")) | duplicated(DT, by = c("Year", "Amount"), fromLast = TRUE)]
  • 第一次duplicated()标记除首次出现外的重复行
  • fromLast = TRUE的duplicated()标记除末次出现外的重复行
  • 用|取或,就能覆盖重复组里的所有行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:42:06