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

R语言如何使用dplyr::mutate拆分分隔字符串为多行并保留对应标识

问题场景

现有测试数据框结构如下:

df <- data.frame(quadrant = rep(2:3, each = 3, times = 1),
                 ICD = c("S06|D11|A41|O34|O48",
                         "R55|A08|K40",
                         "N23|F13|K80|F19",
                         "R13|C18",
                         "E13|F19",
                         "D11|A41|N23|K80"))

处理要求:对字符串格式的ICD列按分隔符|拆分,拆分后每个ICD编码单独占一行,同时保留对应行的quadrant字段值,核心拆分逻辑需通过dplyr::mutate实现。

实现方案

核心思路是先在mutate步骤中完成字符串拆分,将ICD列转换为存储拆分结果的列表列,再配合tidyr的行展开函数完成长表转换,属于dplyr生态标准操作流。

完整代码

# 加载依赖包
library(dplyr)
library(tidyr)

# 数据处理
df_res <- df %>%
  mutate(ICD = strsplit(ICD, split = "\\|")) %>%
  unnest_longer(ICD)

代码说明

  • mutate步骤调用基础R的strsplit函数完成字符串拆分:注意|是正则表达式特殊元字符,必须用双反斜杠转义为\\|才能被识别为普通分隔符,拆分后ICD列会被转换为列表类型,每个列表元素对应原行拆分得到的所有ICD编码
  • unnest_longer步骤会把列表列按元素逐行展开,展开时自动复制对应行的其他字段(即quadrant值),最终得到每个ICD编码单独一行的结果

结果预览

处理后得到的数据框共20行,结构示例如下:

quadrant ICD
1         2 S06
2         2 D11
3         2 A41
4         2 O34
5         2 O48
6         2 R55
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:51:19