如果最大值高于其他值的中值,如何打印行名称

如果最大值高于其他值的中值,如何打印行名称

如果最大值比其余值的中值高 2 倍,如何打印行名称。

输入

name    s1  s2  s3
g1  20.17   0.21    0.57
g2  0.19    0.19    94.0
g3  0.15    0.21    0.26
g4  0.09    0.19    0.16
g5  0.019   0.19    0
g7  2.28    0   0   

输出

g1  s1  20.17
g2  s3  94.0
g7  s1  2.28

答案1

awk解决方案:

awk 'NR>1{ k=$3*2; f=""; if($2>k) f="s1" OFS $2; else if($4>k) f="s3" OFS $4; 
     if (f!="") print $1,f }' OFS='\t' file

输出:

g1  s1  20.17
g2  s3  94.0
g7  s1  2.28

相关内容