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

如何按样本名匹配logtpm2表达数据与注释表并添加指定列

解决方案

前置注意点

  • 合并前需要先统一两张表的sample_name格式:你提供的示例中,logtpm2里bulk开头的样本名用.分隔(比如bulk.DMSO.Pre.96IFC),注释表对应样本用-分隔(比如bulk.DMSO-Pre-96IFC),需要先把分隔符统一才能正常匹配
  • 合并时选择左连接逻辑,完全保留logtpm2的所有行,最终输出行数和原logtpm2一致(1812364行)

R语言实现(dplyr包)

# 加载依赖包
library(dplyr)

# 读取原始数据
logtpm2 <- read.table("logtpm2文件本地路径", header = T, stringsAsFactors = F)
anno <- read.table("注释文件本地路径", header = T, stringsAsFactors = F)

# 统一样本名字符格式:将注释表中的横杠替换为点
anno$sample_name <- gsub("-", ".", anno$sample_name)

# 左连接合并,保留logtpm2全部行,筛选需要的列
result <- left_join(logtpm2, anno, by = "sample_name") %>%
  select(sample_name, Expression, Treatment, Technology)

# 输出最终结果
write.table(result, "合并后结果保存路径", sep = "\t", row.names = F, quote = F)

Python实现(pandas库)

import pandas as pd

# 读取原始数据
logtpm2 = pd.read_table("logtpm2文件本地路径")
anno = pd.read_table("注释文件本地路径")

# 统一样本名字符格式:将注释表中的横杠替换为点
anno["sample_name"] = anno["sample_name"].str.replace("-", ".")

# 左连接合并,保留logtpm2全部行,筛选需要的列
result = pd.merge(logtpm2, anno, on="sample_name", how="left")
result = result[["sample_name", "Expression", "Treatment", "Technology"]]

# 输出最终结果
result.to_csv("合并后结果保存路径", sep="\t", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:06:01