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

R语言如何用separate、mutate拆分Tax.Rate为CGST等税率列

R语言拆分税率列实操方法

核心思路是针对每个税种单独做正则匹配提取,不受不同行税种组合、顺序不一致的影响,可直接运行以下代码测试:

首先加载依赖包:

library(tidyverse)

先构造和你示例一致的测试数据:

df <- tibble(
  Tax.Rate.... = c(
    "CGST 2.5% + SGST 2.5%",
    "CGST 6% + UTGST 6%",
    "IGST 12% "
  )
)

执行拆分操作:

df_result <- df %>%
  mutate(
    CGST = str_extract(Tax.Rate...., "(?<=CGST\\s)\\d+\\.?\\d*%"),
    SGST = str_extract(Tax.Rate...., "(?<=SGST\\s)\\d+\\.?\\d*%"),
    UTGST = str_extract(Tax.Rate...., "(?<=UTGST\\s)\\d+\\.?\\d*%"),
    IGST = str_extract(Tax.Rate...., "(?<=IGST\\s)\\d+\\.?\\d*%")
  )

运行后得到的df_result就包含你需要的4个税种独立列,当前行没有对应税种的位置会返回NA。

如果需要把税率转为可计算的数值型,可追加以下处理:

df_numeric <- df_result %>%
  # 去掉%符号,转为数值后除以100得到小数格式的税率
  mutate(across(CGST:IGST, ~as.numeric(str_remove(.x, "%")) / 100))

之前用separate失败的原因

separate函数适合固定分隔符、列拆分顺序和数量固定的场景,你的数据中每行的税种组合、排列顺序都不固定,所以不适合用separate做硬拆分。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:01