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

如何在R中将成本中心范围字符串拆分为独立的单个取值

R实现成本中心范围字符串拆分展开的方法

你可以用tidyverse系列包完成该需求,核心逻辑是拆分范围、分离字母前缀与数字序号、生成连续序列后拼接、最后展开行,以下是可直接运行的完整代码:

第一步:加载依赖与构造示例数据

library(tidyverse)

# 示例数据和你的业务场景一致,你可以替换为自己的DataFrame
df <- tibble(
  cost_range = c("A6652 - A6670", "B2001 - B2005", "C1230 - C1232")
)

第二步:核心处理逻辑

df_result <- df %>%
  # 拆分范围字符串为起始值、结束值两列
  separate(cost_range, into = c("start", "end"), sep = "\\s*-\\s*", remove = FALSE) %>%
  # 提取公共字母前缀、起止值的数字部分
  mutate(
    prefix = str_extract(start, "^[A-Za-z]+"),
    start_num = as.integer(str_extract(start, "\\d+$")),
    end_num = as.integer(str_extract(end, "\\d+$"))
  ) %>%
  # 生成当前范围对应的所有成本中心序列
  mutate(cost_centre = map2(start_num, end_num, ~ paste0(prefix, seq(.x, .y)))) %>%
  # 把列表格式的序列展开为单行单个成本中心
  unnest(cost_centre) %>%
  # 保留需要的列,可按需调整顺序
  select(cost_range, cost_centre)

特殊场景适配

如果你的成本中心数字部分需要固定长度补零(比如始终保持4位数字,不足的左侧补0),把生成序列的代码修改为以下格式即可:

mutate(cost_centre = map2(start_num, end_num, ~ paste0(prefix, str_pad(seq(.x, .y), width = 4, side = "left", pad = "0"))))

如果前缀包含特殊字符,调整str_extract中的正则规则匹配你的业务格式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:06:03