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

如何用tidyverse移除文本中数字前的末尾连字符(多列处理)

用tidyverse批量处理多列ID文本:移除末尾后接数字的连字符

核心解法

使用dplyr::across()批量处理目标列,结合stringr::str_replace()和正则表达式精准匹配并移除目标连字符。

示例代码

1. 构造示例数据

library(tidyverse)

# 包含多列ID的示例数据集
data <- tibble(
  id = c("2022-05-19-admin-raca-16", "2022-05-19-admin-hyla16"),
  id2 = c("user-dev-23", "user-prod45")
)

2. 批量处理指定列

# 处理指定的ID列(比如id和id2)
processed_data <- data %>%
  mutate(across(c(id, id2), ~ str_replace(.x, "-(\\d+)$", "\\1")))

3. 批量处理所有字符列

如果需要自动处理数据中所有字符类型的列,改用:

processed_data <- data %>%
  mutate(across(where(is.character), ~ str_replace(.x, "-(\\d+)$", "\\1")))

正则说明

  • -(\\d+)$:精准匹配字符串末尾的连字符,要求连字符后紧跟一个或多个数字(\\d+),$锚定字符串结尾,避免误删中间的连字符。
  • \\1:引用正则表达式中括号捕获的数字部分,替换时仅保留数字,相当于移除了目标连字符。

处理结果

processed_data
#> # A tibble: 2 × 2
#>   id                          id2       
#>   <chr>                       <chr>     
#> 1 2022-05-19-admin-raca16     user-dev23
#> 2 2022-05-19-admin-hyla16     user-prod45

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:12:05