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

R语言中如何为dataframe编写筛选器删除重复数据仅保留唯一值

R实现单列重复值替换为NA需求

这个需求完全可以实现,核心思路是对数据框的每一列单独判断,标记出所有出现次数≥2的数值,将对应位置替换为NA即可。

基础R实现(无需额外安装包)

# 构造原始数据框
question <- data.frame(
  "cars" = c(1,1,2,2,34),
  "bike" = c(1,1,2,2,37),
  "motorcycle" = c(3,3,2,2,45),
  "trycicle" = c(3,3,4,4,56),
  "skate" = c(1,1,4,4,78)
)

# 按列处理:重复值替换为NA,仅保留唯一值
question2 <- as.data.frame(lapply(question, function(x) {
  # 标记所有出现过至少两次的元素位置
  x[duplicated(x) | duplicated(x, fromLast = TRUE)] <- NA
  return(x)
}))

# 输出验证
print(question2)

tidyverse/dplyr 实现

如果你习惯使用tidyverse生态,可以用across批量处理所有列:

library(dplyr)

question2 <- question %>%
  mutate(across(everything(), ~ ifelse(duplicated(.) | duplicated(., fromLast = TRUE), NA, .)))

运行上述任意一段代码,得到的question2都和你给出的预期结果完全一致。


内容的提问来源于stack exchange,提问作者Enzo De Gaspari Ramos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:15:03