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

如何在R中从现有列提取指定内容新建sample_id等多列

实现方案

Python(Pandas 环境)

生信分析中处理测序文件名表格最常用的是Pandas库,直接通过正则匹配一次性提取所需字段即可:

import pandas as pd

# 假设df为存储了name列的原始数据框
df[['sample_id', 'timepoint', 'paired_end']] = df['name'].str.extract(
    r'^(?P<sample_id>\d{10})-(?P<timepoint>\d+)_R(?P<paired_end>\d+)_'
)

# 可选:将提取到的数字类字段转换为整型
df['timepoint'] = df['timepoint'].astype(int)
df['paired_end'] = df['paired_end'].astype(int)

正则规则完全匹配你给出的文件名格式:

  • 开头10位数字匹配为sample_id
  • -和_R之间的数字匹配为timepoint
  • _R和下一个_之间的数字匹配为paired_end

R(tidyverse 环境)

如果你习惯用R处理数据,使用stringr的正则提取功能即可实现:

library(tidyverse)

# 假设df为存储了name列的原始数据框
df <- df %>%
  mutate(
    sample_id = str_extract(name, "^\\d{10}"),
    timepoint = as.integer(str_extract(name, "(?<=-)\\d+(?=_R)")),
    paired_end = as.integer(str_extract(name, "(?<=_R)\\d+(?=_)"))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:02