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

如何在R的data.table中拆分多字段并对应扩展行?

使用data.table拆分多值字段为对应行的解决方案

需求说明

处理data.table中以分号分隔的多值字段,将其拆分为独立行,同时保证不同字段拆分后的值一一对应匹配。

示例数据

library(data.table)
df <- data.table(probe = c('A', 'B', 'C'), # 实际数据包含更多列
                 gene = c('geneA', 'geneB;geneC', 'geneD;geneH;geneI;geneO'), 
                 type = c('mRNA', 'mRNA;miRNA', 'mRNA;miRNA;mRNA;miRNA')) 

原始数据输出:

probe                    gene                  type
1:      A                   geneA                  mRNA
2:      B             geneB;geneC            mRNA;miRNA
3:      C geneD;geneH;geneI;geneO mRNA;miRNA;mRNA;miRNA

解决方案

使用data.table原生的tstrsplit和分组操作实现,代码如下:

df.new <- df[, .(gene = unlist(tstrsplit(gene, ";")), 
                 type = unlist(tstrsplit(type, ";"))), 
             by = probe]

代码说明

  • by = probe:按probe字段分组,确保每个探针的拆分结果保持关联
  • tstrsplit(col, ";"):将目标字段按分号拆分为列表,每个元素对应分组内的拆分后值向量
  • unlist():将拆分后的列表转换为向量,配合分组逻辑自动扩展为多行,且不同字段的拆分结果严格一一对应

最终输出

probe   gene   type
1:      A  geneA   mRNA
2:      B  geneB   mRNA
3:      B  geneC  miRNA
4:      C  geneD   mRNA
5:      C  geneH  miRNA
6:      C  geneI   mRNA
7:      C  geneO  miRNA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:47:08