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

R语言实现:移除数据框地址列的L+数字/字母数字模式

解决方案

可以通过正则表达式精准匹配所有需要移除的L开头模式,结合R的字符串处理函数完成批量清理。以下是两种可行方案:

方法1:Base R 原生 gsub 函数

使用覆盖所有变体的正则规则,一次性匹配并移除目标内容:

# 清理edited_address列
CB_Edit$edited_address <- gsub(
  pattern = "\\bL\\d{1,4}(?:[A-Z]\\d{0,4})?\\b",
  replacement = "",
  x = CB_Edit$edited_address,
  ignore.case = FALSE # 如果需要匹配小写l,改为TRUE
)
# 移除清理后可能残留的多余空格
CB_Edit$edited_address <- gsub("\\s+", " ", trimws(CB_Edit$edited_address))

正则规则说明:

  • \\b:匹配单词边界,避免误匹配地址中包含L的正常单词(比如"Lake")
  • L:匹配大写字母L
  • \\d{1,4}:匹配1到4位数字(对应0-9999范围)
  • (?:[A-Z]\\d{0,4})?:非捕获组,可选匹配一个大写字母+0到4位数字(覆盖L1A、L1A1这类变体)
  • ?:表示整个非捕获组是可选的,兼容纯数字后缀的情况(比如L123)

方法2:Tidyverse 生态 stringr 函数

如果习惯使用tidyverse,str_remove_all 更简洁:

library(stringr)

CB_Edit <- CB_Edit %>%
  mutate(
    edited_address = str_remove_all(edited_address, "\\bL\\d{1,4}(?:[A-Z]\\d{0,4})?\\b"),
    edited_address = str_squish(edited_address) # 自动移除多余空格并修剪首尾
  )

测试验证

用示例地址测试效果:

test_addresses <- c(
  "123 Main St L456",
  "L789B Oak Ave",
  "Pine Rd L10A12",
  "456 L7 Elm St"
)
str_remove_all(test_addresses, "\\bL\\d{1,4}(?:[A-Z]\\d{0,4})?\\b") %>% str_squish()
# 输出:[1] "123 Main St" "Oak Ave"     "Pine Rd"     "456 Elm St"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:15:51