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

在R语言中如何用df2替换df1中匹配的重复数据

在R语言中用标准数据集df2替换df1中的重复拼接/相似数据

需求说明

df1中存在两类需要修正的条目:

  • 重复拼接的标准条目(如将"A. MAHJUM-61365"重复拼接为"A. MAHJUM-61365. MAHJUM-61365"或"ABD. KADIR-60447ABD. KADIR-60447")
  • 拼写/格式相近的非标准条目(如"ABDUL AZIS @HYUNDAI"和"ABDUL AZIZ@HYUNDAI"对应df2中的"ABDUL AZIS @HYUNDAY")

需要将这些条目全部替换为df2中的标准值,使df1的有效内容与df2一致。

解决方案代码

library(stringr)

# 定义原始数据集
df1 <- data.frame(
  name = c(
    "A. MAHJUM-61365",
    "A. MAHJUM-61365. MAHJUM-61365",
    "A. RIZAL. AD-11002795",
    "A. RIZAL. AD-11002795. RIZAL. AD-11002795",
    "ABD. KADIR-60447",
    "ABD. KADIR-60447ABD. KADIR-60447",
    "ABD. KAHAR-62551",
    "ABD. RASYID DS-11002082",
    "ABDREAS APUNG @SANY",
    "ABDUL AZIS @HYUNDAY",
    "ABDUL AZIS @HYUNDAI",
    "ABDUL AZIZ@HYUNDAI"
  ))

df2 <- data.frame(
  name = c(
    "A. MAHJUM-61365",
    "A. RIZAL. AD-11002795",
    "ABD. KADIR-60447",
    "ABD. KAHAR-62551",
    "ABD. RASYID DS-11002082",
    "ABDREAS APUNG @SANY",
    "ABDUL AZIS @HYUNDAY"
  ))

# 第一步:替换重复拼接的条目
for (standard_name in df2$name) {
  # 构建正则表达式,匹配标准值重复出现的情况(兼容点分隔、空格分隔或无分隔的拼接)
  pattern <- str_c("(", str_replace_all(standard_name, "\\.", "\\\\."), ")(\\.\\s*|)", "\\1+")
  df1$name <- str_replace_all(df1$name, pattern, standard_name)
}

# 第二步:替换拼写/格式相近的条目(基于字符串编辑距离匹配最接近的标准值)
df1$name <- sapply(df1$name, function(x) {
  distance <- adist(x, df2$name)
  df2$name[which.min(distance)]
})

# 输出处理后的结果
print(df1)

代码说明

  1. 重复拼接处理:

    • 遍历df2中的每个标准条目,构建正则表达式匹配该条目重复出现的场景(包括带点分隔、空格分隔或直接拼接的情况)。
    • 使用str_replace_all将匹配到的重复内容替换为标准条目。
  2. 拼写/格式相近处理:

    • 用adist函数计算df1条目与df2所有标准条目的编辑距离(衡量字符串差异程度的指标)。
    • 选取距离最小的标准条目作为替换值,解决拼写错误或格式差异的问题。

处理后结果

运行代码后,df1的name列将完全匹配df2中的标准条目,结果如下:

name
1        A. MAHJUM-61365
2        A. MAHJUM-61365
3  A. RIZAL. AD-11002795
4  A. RIZAL. AD-11002795
5       ABD. KADIR-60447
6       ABD. KADIR-60447
7       ABD. KAHAR-62551
8 ABD. RASYID DS-11002082
9    ABDREAS APUNG @SANY
10     ABDUL AZIS @HYUNDAY
11     ABDUL AZIS @HYUNDAY
12     ABDUL AZIS @HYUNDAY

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:42:16