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

R语言如何从dataframe的分号分隔字段提取AD值并新增列

问题分析

你编写的代码存在3处问题:

  • 代码中直接使用X1未指定所属数据框,若环境中无单独的X1变量会直接报错
  • 拆分后的单个键值对格式为AD=xxx,并非完全等于AD=,which(x == "AD=")无法匹配到有效位置
  • 即使匹配到对应位置,取出的也是完整的AD=xxx字符串,还需移除前缀才能得到目标数值
实现方案

方案1:正则提取(最简洁,无需拆分字符串)

base R 实现(无需额外安装包)

Old$X2 <- sub(".*AD=([0-9,]+).*", "\\1", Old$X1)

tidyverse 实现(适合习惯stringr操作的场景)

library(stringr)
Old$X2 <- str_extract(Old$X1, "(?<=AD=)[0-9,]+")

方案2:修正你的原有拆分思路

如果你希望继续用按分号拆分的逻辑,修正后的代码如下:

Old$X2 <- mapply(
  function(x) {
    # 匹配前缀为AD=的元素
    ad_item <- x[grepl("^AD=", x)]
    # 移除AD=前缀
    sub("^AD=", "", ad_item)
  },
  strsplit(Old$X1, ";")
)

运行任意方案后,得到的Old数据框即为你需要的结果:

X1       X2
1 AD=17795,54;ARL=139;DEA=20;DER=20;DP=1785 17795,54
2    DP=4784;AD=4753,23;ARL=123;DEA=5;DER=5 4753,23
3     ARL=149;AD=30,9;DEA=25;DER=25;DP=3077    30,9
4      AD=244,49;ARL=144;DEA=7;DER=7;DP=245   244,49

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:51:01