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

如何重排OTU/ASV频率表中顺序错乱的样本列?

扩增子OTU/ASV频率表样本列重排操作方法

针对30个样本的列顺序错乱问题,无需逐列手动调整,基于自然排序逻辑可在数秒内完成重排,完全匹配人对“样本编号B1、B2、B3…Bn”的排序直觉。

R 环境实现(适配绝大多数扩增子分析流程)

  • 操作原理:自动识别列名末尾的数字编号,跳过普通字符串排序的缺陷,直接生成符合预期的列顺序,再完成表格重排、导出
  • 可直接复用的代码块:
# 首次运行先安装依赖
install.packages(c("gtools"))
library(gtools)

# 读入原始ASV/OTU表,设置OTU/ASV列为行名,保留原始列名不做格式转换
raw_tab <- read.delim("raw_asv_table.tsv", row.names = 1, check.names = FALSE)

# 对所有样本列名做自然排序
sorted_sample_cols <- mixedsort(colnames(raw_tab))

# 校验排序结果是否符合预期
print(sorted_sample_cols)

# 按照校验后的顺序重排列,导出校正后的表格
corrected_tab <- raw_tab[, sorted_sample_cols]
write.table(corrected_tab, "corrected_asv_table.tsv", 
            sep = "\t", quote = FALSE, col.names = NA)

Python 环境实现

  • 操作逻辑和R方案完全一致,依赖自然排序库避免字典序错乱
  • 可直接复用的代码块:
# 首次运行先安装依赖
# pip install pandas natsort
import pandas as pd
from natsort import natsorted

# 读入原始ASV/OTU表
raw_df = pd.read_csv("raw_asv_table.tsv", sep="\t", index_col=0)

# 对列名做自然排序
sorted_cols = natsorted(raw_df.columns)

# 按顺序重排列并导出
corrected_df = raw_df[sorted_cols]
corrected_df.to_csv("corrected_asv_table.tsv", sep="\t", index=True)

Excel 无代码临时操作

适合不想启动编程环境的临时场景,30个样本5分钟内可完成:

  • 将表格所有样本列名复制到表格下方的空白行
  • 选中这行复制的样本名,依次点击「数据-排序」,在弹窗中选择「按行排序」,排序依据为当前选中行,次序选择「升序」,即可得到符合直觉的排序结果
  • 按照排好的样本名顺序,逐列剪切粘贴到新的空白工作表中,校验顺序一致后导出即可

关键注意事项

  • 避开普通字符串排序的坑:直接用默认的字典序排序时,会出现sample-B1、sample-B10、sample-B11、sample-B2的错误顺序,所有上述方案均采用自然排序逻辑,会自动识别列名中的数字段做数值大小比较,和人工排序的结果完全一致
  • 操作前备份原始频率表,避免误操作覆盖原始结果
  • 导出后可随机抽查几列的位置,确认和记录的样本编号顺序一致后,再接入下游分析流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 14:06:04