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

R正则表达式处理数据框列表 提取人员、编码及首条日期数据

R语言多数据框信息提取解决方案
library(tidyverse)

# 示例输入
v1 <- c("Worker: Joseph", "06/01/21", "12-00.07", "06/19/21", "useless", "06-11.85")
v2 <- c("useless","99-08-70", "Worker: 3rd", "05/01/21", "useless", "25-57.99", "07/01/21")
df1 <- data.frame(text = v1)
df2 <- data.frame(text = v2)
PDF_list <- list(df1, df2)

# 核心处理逻辑
one_df <- map_dfr(PDF_list, function(df) {
  # 提取工作人员信息
  worker <- str_subset(df$text, "Worker:") |> 
    str_match("Worker:\\s*(\\w+)") |> 
    _[1,2]
  
  # 提取第一个有效日期
  date <- str_subset(df$text, "^\\d{2}/\\d{2}/\\d{2}$") |> 
    _[1]
  
  # 提取所有符合要求的编码
  code <- str_subset(df$text, "-\\d{2}[-.]") |> 
    str_match("-(\\d{2})[-.]") |> 
    _[,2]
  
  # 拼接成当前数据框对应的结果
  tibble(
    Worker = worker,
    Code = code,
    Date = date
  )
})

# 查看结果
View(one_df)

核心调整说明

  • 工作人员提取:通过str_subset过滤含Worker的行后,用正则捕获组直接提取后面的标识,而非保留原整行文本
  • 日期提取:严格匹配dd/dd/dd格式的字符串,直接取第一个匹配结果,避免无效日期干扰
  • 编码提取:匹配-两位数字+点/横线的特征,用捕获组提取中间的两位标准编码,支持原示例中12-00.07、99-08-70两种分隔格式
  • 循环优化:用purrr::map_dfr替代for循环,直接拼接所有结果为总表,避免手动绑定列的长度不匹配问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 11:06:07