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

Dplyr使用指南:R data.frame中双姓姓名数据的识别与标准化清洗

R使用dplyr实现双姓姓名筛选与清洗

依赖包准备

需要用到dplyr做数据处理,stringr做字符串匹配,未安装可先执行安装:

install.packages(c("dplyr", "stringr"))

完整实现代码

# 加载包
library(dplyr)
library(stringr)

# 原始数据
df <- data.frame(names = c("Adu-Amankwah E",
                           "Smith Dawson E",
                           "Lopez-Garcia M",
                           "Lopez Garcia MA",
                           "Garcia MAC",
                           "Lopez Garcia MA",
                           "Garcia MAC"))

# 清洗核心逻辑
df_clean <- df %>%
  # 筛选符合要求的双姓记录:含连字符/双空格(双姓+首字母格式)/需要替换的Garcia MAC记录
  filter(str_detect(names, "-|\\s.*\\s|Garcia MAC")) %>%
  # 按规则替换姓名内容
  mutate(names = case_when(
    # 精确匹配需要统一替换的姓名,避免误匹配
    names %in% c("Lopez Garcia MA", "Lopez-Garcia MA", "Garcia MAC") ~ "Lopez-Garcia M",
    names == "Smith Dawson E" ~ "Smith-Dawson E",
    # 其余符合条件的记录保留原值
    .default = names
  ))

输出验证

运行print(df_clean)即可得到目标结果:

names
1 Adu-Amankwah E
2 Smith-Dawson E
3 Lopez-Garcia M
4 Lopez-Garcia M
5 Lopez-Garcia M
6 Lopez-Garcia M
7 Lopez-Garcia M

注意事项

  • 若不需要过滤原始数据、仅对全量数据做替换,直接删除filter那一行即可
  • 代码使用精确匹配做规则判断,比正则模糊匹配更稳妥,若实际场景需要模糊匹配,可将判断条件替换为str_detect正则表达式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:02