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

在R语言中去除重复姓氏并将下划线替换为空格

R语言批量清洗姓氏与名字字符串方案

需求对应处理逻辑

  • 姓氏列:拆分下划线分隔的重复元素→去重→用空格连接复合姓氏
  • 名字列:移除开头下划线→将中间下划线替换为空格

完整实现代码

# 加载字符串处理依赖包
library(tidyverse)

# 模拟数千行结构的示例数据
raw_data <- tibble(
  full_name = c(
    "王_王_李,_小_明",
    "张_张,_丽_娜",
    "刘_陈_刘,_大_强",
    "欧阳_欧阳,_雪_梅",
    "赵_钱_赵,_伟_华"
  )
)

# 姓氏清洗函数:拆分去重后空格连接
clean_surname <- function(surname_str) {
  surname_str %>%
    str_split("_") %>%
    map(unique) %>%
    str_flatten(" ")
}

# 名字清洗函数:删开头下划线+替换中间下划线为空格
clean_given_name <- function(given_name_str) {
  given_name_str %>%
    str_remove("^_") %>%
    str_replace_all("_", " ")
}

# 批量处理流程
cleaned_data <- raw_data %>%
  # 按逗号拆分原始姓名为姓氏、名字原始列
  separate(full_name, into = c("surname_raw", "given_name_raw"), sep = ",", trim = TRUE) %>%
  # 清洗姓氏
  mutate(surname_clean = clean_surname(surname_raw)) %>%
  # 清洗名字
  mutate(given_name_clean = clean_given_name(given_name_raw)) %>%
  # 保留最终清洗后的列(可选)
  select(surname_clean, given_name_clean)

# 输出结果
print(cleaned_data)

关键说明

  1. 数据读取:若数据存储在CSV文件中,替换示例数据部分为:
    raw_data <- read_csv("your_data_file.csv", col_names = "full_name")
    
  2. 效率适配:所有操作均为向量化处理,无需循环,处理数千行数据完全无压力
  3. 边界场景兼容:自动处理复合姓氏(如欧阳_欧阳清洗为欧阳)、多重复元素姓氏(如王_王_李清洗为王 李)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:22:39