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

R语言按email字段去重时如何保留NA与值为“.”的所有行?

R 实现指定条件去重的解决方案

两种实现思路,都可以满足你保留所有NA和.行、仅对有效邮箱去重的需求:

方法1:dplyr分组合并(逻辑清晰易调试)

核心思路是将数据集拆分为「需要去重的有效邮箱行」和「需全量保留的特殊值行」,分别处理后再拼接:

library(dplyr)

result <- test %>%
  # 筛选出非NA、非.的有效邮箱行
  filter(!is.na(email), email != ".") %>%
  # 按邮箱去重,.keep_all = TRUE保留所有列,默认保留首次出现的行
  distinct(email, .keep_all = TRUE) %>%
  # 拼接回所有需保留的NA、.对应的行
  bind_rows(test %>% filter(is.na(email) | email == "."))

方法2:基础R条件筛选(代码更简洁)

直接通过逻辑判断筛选需保留的行,仅删除有效邮箱且重复的行:

result <- test[!duplicated(test$email) | is.na(test$email) | test$email == ".", ]

逻辑说明:满足以下三个条件任意一个的行都会被保留:

  • 对应邮箱是第一次出现
  • 邮箱值为NA
  • 邮箱值为.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:18:02