如果最大值比其余值的中值高 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