You need to enable JavaScript to run this app. R中如何拆分data.table的t_IDs列生成含IDs字段的多行新数据
优惠活动
大模型
产品
解决方案
定价
更多

R中如何拆分data.table的t_IDs列生成含IDs字段的多行新数据

R中data.table拆分空格分隔列转为多行的实现方法

你可以直接使用data.table原生语法实现需求,代码如下:

# 先加载data.table包,假设你的数据对象命名为dt
library(data.table)
result_dt <- dt[, .(IDs = unlist(strsplit(t_IDs, split = " "))),
                by = .(State, AgentID, t_IDs)]

代码说明

  • by参数指定需要保留的原数据列,拆分过程中这些列的值会对应复用
  • strsplit(t_IDs, " ")会把t_IDs的每个值按空格拆分为向量
  • unlist将拆分得到的列表转为向量,配合分组逻辑自动生成对应多行
  • 新生成的IDs列就是拆分后的单个值,默认是字符类型,如果需要转为整数可以额外加一步转换:
result_dt[, IDs := as.integer(IDs)]

如果你的data.table版本在v1.12.0及以上,也可以用更简洁的tstrsplit写法:

result_dt <- dt[, c(.SD, .(IDs = tstrsplit(t_IDs, " "))), by = 1:nrow(dt)][, !"nrow"]

如果你习惯tidyverse语法,也可以用tidyr的separate_rows函数,对data.table对象同样兼容:

library(tidyr)
result_dt <- separate_rows(dt, IDs = t_IDs, sep = " ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:27:06