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

如何使用awk将重复行组转换为列?附7列示例数据说明

解析与处理你的7列基因型文本数据

首先我先把你提供的连续原始数据拆分成每行7列的清晰格式(原始数据是无换行的连续内容,拆分后才是正确的每行一条样本-基因记录):

18030 AAJ51 FTO rs9939609 C__30090620_10 A T
18030 AAJ51 CAT rs1001179 C__11468118_10 C C
18030 AAJ51 CCL2 rs1024611 C___2590362_10 G G
18030 AAJ51 TAS2R38 rs10246939 C___9506826_10 C C
20287 AAJ51 FTO rs9939609 C__30090620_10 A T
20287 AAJ51 CAT rs1001179 C__11468118_10 C C
20287 AAJ51 CCL2 rs1024611 C___2590362_10 A G
20287 AAJ51 TAS2R38 rs10246939 C___9506826_10 T T

数据结构先理清楚

先帮你明确每一列的含义,方便后续处理:

  • 第1列:样本ID(比如18030、20287,是每个样本的唯一标识)
  • 第2列:固定重复标识(AAJ51,所有记录都一致,可能是批次或项目标记)
  • 第3列:基因名称(如FTO、CAT,每个基因对应固定的SNP位点)
  • 第4列:SNP位点ID(如rs9939609,是该基因上的特定检测位点)
  • 第5列:探针ID(每个SNP对应的检测探针编号,同一位点的探针固定)
  • 第6-7列:基因型(样本在该SNP位点的两个等位基因,比如A/T是杂合型,C/C是纯合型)

常见处理场景的实现方法

1. 快速筛选特定样本的所有数据

如果你想提取样本20287的全部基因检测记录,用awk命令就能一键搞定:

awk '$1 == "20287" {print $0}' your_data.txt

执行后会输出该样本的4条记录:

20287 AAJ51 FTO rs9939609 C__30090620_10 A T
20287 AAJ51 CAT rs1001179 C__11468118_10 C C
20287 AAJ51 CCL2 rs1024611 C___2590362_10 A G
20287 AAJ51 TAS2R38 rs10246939 C___9506826_10 T T

2. 提取特定基因的所有样本数据

比如要查看所有样本的FTO基因检测结果,同样用awk筛选第3列:

awk '$3 == "FTO" {print $0}' your_data.txt

输出结果:

18030 AAJ51 FTO rs9939609 C__30090620_10 A T
20287 AAJ51 FTO rs9939609 C__30090620_10 A T

3. 用Python转成结构化表格做分析

如果需要做后续的统计或可视化,用pandas把数据转成DataFrame会更方便:

import pandas as pd

# 读取文本文件,指定列名
col_names = ["SampleID", "FixedID", "Gene", "SNP", "ProbeID", "Allele1", "Allele2"]
df = pd.read_csv("your_data.txt", sep=" ", header=None, names=col_names)

# 查看前3行数据确认格式
print(df.head(3))

输出的表格结构会非常清晰:

SampleIDFixedIDGeneSNPProbeIDAllele1Allele2
18030AAJ51FTOrs9939609C__30090620_10AT
18030AAJ51CATrs1001179C__11468118_10CC
18030AAJ51CCL2rs1024611C___2590362_10GG

4. 统计每个SNP的基因型分布

基于上面的DataFrame,还能快速统计每个SNP位点的基因型出现次数:

# 把两个等位基因合并成基因型字符串(比如A/T)
df["Genotype"] = df["Allele1"] + "/" + df["Allele2"]

# 按SNP和基因型分组统计数量
genotype_stats = df.groupby(["SNP", "Genotype"]).size().unstack(fill_value=0)
print(genotype_stats)

输出的统计结果一目了然:

SNPA/GA/TC/CT/T
rs10011790020
rs10246111000
rs102469390011
rs99396090200

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:12:14