最大値が他の値の中央値より大きい場合に行名を印刷する方法

最大値が他の値の中央値より大きい場合に行名を印刷する方法

最大値が残りの値の中央値より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 '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

おすすめ記事