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

如何在R语言中删除所有列值完全相同的行

如何在R中删除数据框中所有列完全相同的重复行

要删除数据框里所有列值完全一致的重复行,有两种简单可靠的方法:

方法1:用dplyr的distinct()去重

如果你在用dplyr,直接调用不带列名参数的distinct()即可,它默认会检查所有列的组合,只保留第一次出现的唯一行:

library(dplyr)

# 生成去重后的数据集
goal_stats_clean <- goal_stats %>%
  distinct(.keep_all = TRUE)

这个方法只会移除那些所有列值都一模一样的重复行,像你例子里completions列值不同的行,本来就不是完全重复,会被保留下来,这是正常的。

方法2:用base R的duplicated()

如果习惯用基础R语法,用duplicated()标记重复行,再筛选非重复行即可:

# 筛选出所有非完全重复的行
goal_stats_clean <- goal_stats[!duplicated(goal_stats), ]

duplicated(goal_stats)会生成一个逻辑向量,标记出哪些行是之前出现过的完全重复行,取反后就能得到去重后的结果。


你之前代码的问题说明

你用来去重的goal_stats1 <- goal_stats %>% distinct(.keep_all = TRUE)其实是正确的,它确实只删除所有列完全相同的行。而你提取疑似重复行的代码里,add_count()后再加distinct()是多余的:

  • add_count(所有列)会给每个完全重复的行组分配大于1的n值,filter(n>1)已经能筛选出所有完全重复的行;
  • 之后的distinct()会把这些重复行压缩成唯一行,反而让你误以为存在“部分重复的行”,但实际上那些completions不同的行根本不会被filter(n>1)选中,它们本来就不是完全重复行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:53:08