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

如何从文本数据集中提取指定字段并存储至新DataFrame?

问题描述

现有R语言数据集dfx如下:

dfx=structure(list(V1 = c("(Description and Operation, 100-00 General Information) <a data-searchnum=G2107576  data-procuid=G1620638>Acceleration Control - Overview", 
                      "(Description and Operation, 310-02 Acceleration Control) <a data-searchnum=G2232632  data-procuid=G2210282>Acceleration Control - System Operation and Component Description", 
                      "(Description and Operation, 310-02 Acceleration Control) <a data-searchnum=G2232633  data-procuid=G2210283>Acceleration Control", 
                      "(Diagnosis and Testing, 310-02 Acceleration Control) <a data-searchnum=G2118147  data-procuid=G2118148>Accelerator Pedal ")), class = "data.frame", row.names = c(NA, 
                                                                                                                      -4L))

需要提取每个字符串中data-searchnum属性的值,并将这些值存储到新的DataFrame中,期望结果如下:

G2107576
G2232632
G2232633
G2118147
解决方案

可以用R语言的stringr包通过正则匹配实现提取,步骤如下:

  1. 若未安装stringr包,先执行安装命令;之后加载包
  2. 使用str_extract函数匹配data-searchnum=后的非空白字符,即为目标值

代码示例:

# 安装并加载stringr包
if (!require(stringr)) {
  install.packages("stringr")
  library(stringr)
}

# 提取data-searchnum字段值
extracted_nums <- str_extract(dfx$V1, "(?<=data-searchnum=)\\S+")

# 生成新的DataFrame
new_df <- data.frame(SearchNum = extracted_nums)

# 查看结果
print(new_df)

执行后得到的new_df即为目标数据集,输出结果:

SearchNum
1  G2107576
2  G2232632
3  G2232633
4  G2118147

正则说明:(?<=data-searchnum=)是正向预查,定位到data-searchnum=之后的位置;\\S+匹配连续的非空白字符,刚好对应data-searchnum的属性值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:45:18