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

在R中使用dplyr将字符串末尾匹配指定词组移至开头的实现方法

实现代码

你可以搭配dplyr和stringr完成需求,完整代码如下:

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

# 构造原始数据
string <- as.data.frame(c("ABA PRIMARY SCHOOL", "BLABLA SECONDARY SCHOOL", "WAZA INSTITUT", "INSTITUT WAMA", "PRIMARY SCHOOL WAMA")) %>%
  rename(raw_str = 1)
trail = c(" PRIMARY SCHOOL", " SECONDARY SCHOOL", " INSTITUT")

# 构造匹配字符串末尾的正则规则
trail_pattern <- paste0("(", paste(str_escape(trail), collapse = "|"), ")$")

# 数据处理
result <- string %>%
  mutate(
    # 提取末尾匹配到的固定词组
    match_trail = str_extract(raw_str, trail_pattern),
    # 移除原字符串末尾的匹配词组
    remain_part = str_remove(raw_str, trail_pattern),
    # 拼接得到最终结果,未匹配到词组的字符串直接保留原值
    goal = ifelse(!is.na(match_trail), paste0(str_trim(match_trail), " ", remain_part), raw_str)
  ) %>%
  select(goal)

逻辑说明

  1. 先把所有需要匹配的尾缀词组拼接成适配字符串末尾的正则规则,str_escape用来规避尾缀中存在特殊正则字符的匹配错误问题。
  2. 分三步处理每一行字符串:提取尾缀、移除原字符串的尾缀、拼接成“尾缀在前剩余内容在后”的格式,没有匹配到尾缀的字符串直接返回原值。
  3. 最终输出的result和你给出的goal示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:06:04