乐于分享
好东西不私藏

【问题解决】用excel快速统计一列中出现的基因数量

【问题解决】用excel快速统计一列中出现的基因数量

    小编今天在处理数据时遇到一种情况:使用一个基因集(假设有200个基因),进行KEGG富集分析(clusterProfiler),得到了好多条通路,每条通路包含的基因种类和数量都不一样,如何快速得知这个基因集中,有多少个基因在通路中?


一、问题情景

    假设得到了上面的KEGG结果(实际小编的数据有61条通路),clusterProfiler结果会直接统计每个通路中包含的基因数量。

    我想快速计算geneSymbol列中,出现的基因数量。

请在微信客户端打开

二、问题解决

    最有意思的就是这个了,小编经常用deepseek网页版处理技术问题,当deepseek傻掉了,再换kimi进行补救。于是乎deepseek纠结了10分钟,始终给出错误的统计结果……

    最后还是小编的planB(kimi网页版),一次性就给出了正确的操作方法:

=COUNTA(UNIQUE(TRIM(TOCOL(TEXTSPLIT(TEXTJOIN("/",TRUE,P2:P62),"/"),3))))

其中,

  • P2:P62为geneSymbol列中要统计的单元格范围

  • TEXTJOIN("/", TRUE, A1:A61),把整列数据用 / 连接成一个长字符串(忽略空单元格)
  • TEXTSPLIT(..., "/"),按"/"把这个长字符串重新拆成独立的基因(形成数组)
  • TOCOL(..., 3),把拆分后的二维数组转成一列,参数 3 表示忽略空白和错误值
  • TRIM(...),去掉基因名前后可能存在的空格
  • UNIQUE(...),对基因列表去重
  • COUNTA(...),统计去重后的基因个数

三、举一反三

    那这个excel函数操作是否可以处理多列数据呢?当然可以!

    于是小编开始恶搞了让AB列都有数据,只是把刚才的excel函数中P2:P62改为了A1:B10,就能够得到基因的数量了。

    将这个excel函数简化,即去掉COUNTA后,就能够得到具体的基因名字是谁了经过测试,完全没问题~

点关注,不迷路~勤收藏,不慌张~

相关学习资料