我想说出构成细菌物种的某些基因组合。
所以:
sample number, gene A, gene B, gene C.
公式应该是:
- 如果所有 3 个都是阴性,那么它就是休息组
- 如果 A 和 B 为阳性则为细菌菌株 Pn
- 如果 A 和 C 为阳性,则为细菌菌株 Ps
我怎样才能实现这个目标?
答案1
虽然我根据您的帖子做了一些假设,但这个公式确实可以做到这一点!
=IF(AND(B1<0,C1<0,D1<0),"Rest",IF(AND(B1>=0,C1>=0,D1<0),"Pn",IF(AND(B1>=0,C1<0,D1>=0),"Ps","")))
将公式粘贴到第一行,然后沿着表格的整个长度拖动。
答案2
稍微不同的方法是将数据转换为 Excel 表(这样可以更轻松地进行数据维护和分析)。然后,假设下表:
对 bac_sp 列使用以下函数:
=IF(AND(SIGN([基因 a])=-1,SIGN([基因 b])=-1,SIGN([基因 c])=-1),"Rest",IF(AND(SIGN([基因 a])=1,SIGN([基因 b])=1,SIGN([基因 c])=-1),"Pn",IF(AND(SIGN([基因 a])=1,SIGN([基因 b])=-1,SIGN([基因 c])=1),"Ps","")))
使用表格可以更好地使用名称(例如 [基因 a] 而不是 B2),并且使用符号函数可以避免显式大于/小于比较的需要。您还可以基于此创建数据透视表并获得一些基本统计数据,例如每种菌株的数量。
编辑: 为了避免对上述功能产生误解,请查看Excel 函数符号。此函数仅评估特定值是正数、负数还是零,并分别返回 1、-1 或 0。因此,编码值是什么并不重要,重要的是它是正数还是负数。这是一个具有更多样例数据(和相同的 bac_sp 公式)的样本:
如您所见,无论基因列中的编码值如何,结果都是相同的。函数的参数 -1、1 基于 Sign 函数的可能返回值,而不是基于数据表中的值。
答案3
如果基因分别位于 A、B 和 C 列且从第 1 行开始,我会使用它:
=CHOOSE(SUM((A1<=0)*1,(B1<=0)*2,(C1<=0)*4,1),"","","Ps","Pn","","","","Rest")
它基本上检查每个细胞的符号并将它们乘以一个特定的数字。
如果全部为负数,则SUM
返回 8 以表示Rest
选中。
如果 A 和 B 为正数,则得到和 5,因此Pn
。
如果 A 和 C 为正数,则得到和 3,因此Ps
。