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

如何从R的datatable含逗号分隔多值的单元格中提取最后一个数值

R data.table 提取逗号分隔列最后一个数值方案

假设你的data.table对象名为dt,存储目标分隔数值的列名为col,可直接使用以下两种方法实现需求:

方法1:正则匹配(性能更优)

直接通过正则定位最后一个数值,无需拆分整段字符串,适合数据量较大的场景:

library(data.table)
library(stringr)

# 提取结果默认是字符型,套as.numeric可转为数值型
dt[, result := as.numeric(str_extract(col, "[0-9.]+(?=]$)"))]

方法2:拆分取值(逻辑更直观)

先去掉首尾的方括号,再按逗号拆分后取每组最后一个元素:

library(data.table)

dt[, result := as.numeric(
  sapply(
    strsplit(gsub("\\[|\\]", "", col), ","),
    function(x) tail(x, 1)
  )
)]

测试验证

你可以用以下代码构造和示例一致的测试数据验证效果:

# 构造测试用data.table
dt <- data.table(
  col = c(
    "[1.848]",     
    "[0.207,0.403]",   
    "[0.3,0.29]",      
    "[0.948,3.064]",       
    "[0.431,0.431,0.214]", 
    "[0.305,0.305,0.30]",  
    "[0.213,0.42]",    
    "[0.31,0.30]",     
    "[1.484,2.433]"
  )
)

# 运行上述任意方法后输出结果
print(dt$result)

输出结果和预期完全一致:

[1] 1.848 0.403 0.290 3.064 0.214 0.300 0.420 0.300 2.433

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:18:00