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

如何从含重复与唯一记录的数据集中提取仅无重复记录的数据集?

提取数据集中的唯一记录(无重复行)

我来帮你搞定这个问题!你想要提取的是那些在x列中完全没有重复值的记录(也就是示例里的D和C),而你之前的代码逻辑刚好搞反了,所以得到了重复的记录。下面给你两种简单的解决方法:

方法一:基础R实现

不需要额外包,用基础函数就能完成:

  1. 先统计x列每个值的出现次数
  2. 筛选出出现次数为1的x值
  3. 从原数据集中提取对应行

完整代码:

# 你的示例数据集
x <- c("A","B","B","D","A","C","B","A")
y <- c(1,2,3,4,5,6,7,8)
z <- c(8,7,6,5,4,3,2,1)
Data <- data.frame(x,y,z)

# 步骤1:统计x列各值的出现次数
x_counts <- table(Data$x)
# 步骤2:提取仅出现1次的x值
unique_x_values <- names(x_counts[x_counts == 1])
# 步骤3:筛选出对应行
NewData <- Data[Data$x %in% unique_x_values, ]

# 查看结果
NewData

运行后会得到你期望的结果:

x y z
4 D 4 5
6 C 6 3

方法二:用dplyr包(更简洁的tidyverse风格)

如果你习惯用tidyverse工具链,dplyr的分组筛选会更直观:

library(dplyr)

NewData <- Data %>%
  group_by(x) %>%  # 按x列分组
  filter(n() == 1) # 只保留分组内行数为1的组

为什么你的原代码不对?

你之前的代码:

unique <- Data[!duplicated(Data),] 
NewData <- unique[unique$x %in% unique$x[duplicated(unique$x)],]
  • 第一行Data[!duplicated(Data),]得到的是去重后的所有行(每个重复组只保留第一条,比如A、B、D、C)
  • 第二行又筛选了x在重复列表里的行,所以最终得到的是A和B的记录(也就是原本有重复的组),和你想要的完全相反啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:18:25