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

如何在R中识别字符串内指定词汇的出现顺序,替代Excel手动操作?

问题

现有一份包含20000+条客户数据的Excel表格,此前通过Excel公式(如=MIN(D2:G2)、=IFERROR(LEN(LEFT($B2,FIND(D$1,$B2))),""))计算指定词汇在备注内容字段中的出现位置,以此返回最早出现的词汇,但手动操作繁琐、效率低下,希望迁移至R环境实现相同功能。

指定目标词汇:growth check、growth、weight、feeding

输入数据示例

客户ID备注内容
001The client had weight taken, showed growth with good feeding
002A growth check was conducted
003Growth and weight taken

期望输出

客户ID备注内容优先级1词汇优先级2词汇优先级3词汇
001the client had weight taken, showed growth with good feedingweightgrowthfeeding
002a growth check was conductedgrowth checkNANA
003growth and weight takengrowthweightNA
R实现方案

1. 加载依赖包

使用tidyverse处理数据与字符串,readxl读取Excel文件:

# 首次使用需安装包
install.packages(c("tidyverse", "readxl"))

# 加载包
library(tidyverse)
library(readxl)

2. 导入数据

如果是本地Excel文件,直接读取;示例数据可手动构造:

# 示例数据构造
client_data <- tibble(
  客户ID = c("001", "002", "003"),
  备注内容 = c(
    "The client had weight taken, showed growth with good feeding",
    "A growth check was conducted",
    "Growth and weight taken"
  )
)

# 读取本地Excel文件(替换为你的文件路径)
# client_data <- read_excel("客户数据.xlsx")

3. 核心逻辑实现

编写函数提取每条备注中词汇的出现顺序,注意长词汇需放在对应短词汇前(避免growth先匹配growth check中的片段):

# 目标词汇列表(顺序至关重要)
target_words <- c("growth check", "growth", "weight", "feeding")

# 定义获取词汇优先级的函数
get_word_priority <- function(note_text) {
  # 统一转为小写,消除大小写匹配差异
  note_lower <- str_to_lower(note_text)
  
  # 计算每个词汇的起始出现位置,未找到则为NA
  word_positions <- map_dbl(target_words, ~str_locate(note_lower, .x)[1, 1])
  
  # 按出现位置排序,过滤未找到的词汇,取前3个
  sorted_words <- target_words[order(word_positions)] %>% 
    discard(is.na) %>% 
    head(3)
  
  # 补全至3个元素,不足的用NA填充
  length(sorted_words) <- 3
  return(sorted_words)
}

4. 应用函数并整理输出

将函数批量应用到数据中,拆分结果为优先级列:

client_data <- client_data %>%
  mutate(词汇优先级 = map(备注内容, get_word_priority)) %>%
  unnest_wider(词汇优先级, names_sep = "") %>%
  rename(
    优先级1词汇 = 词汇优先级1,
    优先级2词汇 = 词汇优先级2,
    优先级3词汇 = 词汇优先级3
  )

# 查看最终结果
print(client_data)

运行后即可得到与期望一致的输出,处理2万+条数据的效率远高于手动Excel操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:36:24