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

RNA-seq差异分析:如何用samples dataframe重命名counts表列名

RNA-seq差异表达分析:替换counts表列名为对应样本ID

问题场景

正在进行RNA-Seq数据的差异表达分析,已生成counts表,希望借助samples dataframe中的数据修改列名以提升可读性。counts表的列名是samples中title列的简化版本,需要将其替换为samples中对应的id值。

原始数据示例

counts表(部分内容)

X140624_I266.4MKD.L1.201   X140624_I266.4MKD.L1.202
gene1                                    0                          0
gene2                                   97                         74

samples dataframe(部分内容)

title                                                   id
140718_I266_FCC4RDRACXX_L1_RHUMdztTAAKSRAAPEI-215       GSM2475317
140718_I266_FCC4RDRACXX_L8_RHUMdztTAALIRAAPEI-207       GSM2475318

期望结果

GSM2475317                 GSM2475318
gene1                                    0                          0
gene2                                   97                         74

解决方案(R语言实现)

核心是建立counts列名与samples中title的匹配关系,再映射到对应的id值,以下是通用实现步骤:

步骤1:构建匹配规则

根据counts列名和samples$title的格式共性,生成可匹配的键值。假设counts列名是X{前缀}.{后缀}格式,samples$title是{前缀}_{其他内容}格式,可通过正则处理提取匹配键:

# 处理samples,提取title中的匹配前缀作为键
samples$match_key <- substr(samples$title, 1, 10) # 按需调整提取长度,确保和counts列名前缀匹配

# 处理counts列名,去掉开头的X和后缀部分,得到匹配键
counts_match_keys <- gsub("^X|\\..*$", "", colnames(counts))

步骤2:映射并替换列名

# 建立匹配键到id的映射关系
id_map <- setNames(samples$id, samples$match_key)

# 替换counts表的列名
colnames(counts) <- id_map[counts_match_keys]

如果需要模糊匹配(不确定固定前缀长度),可使用stringr包实现:

library(stringr)

# 为每个counts列名找到对应的samples行索引
match_indices <- str_which(samples$title, str_remove(colnames(counts), "^X"))

# 替换列名
colnames(counts) <- samples$id[match_indices]

注意事项

  • 确保counts的每一列都能在samples中找到唯一对应的title,避免出现NA或不匹配的情况
  • 若实际数据格式和示例有差异,可调整正则表达式或提取逻辑以适配匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:02:32