Como imprimir o nome da linha se o valor máximo for maior, compare com o valor mediano dos outros

1

Como posso imprimir o nome da linha se o valor máximo for 2 vezes maior que o valor mediano do restante dos valores.

entrada

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   

saída

g1  s1  20.17
g2  s3  94.0
g7  s1  2.28
    
por user1883491 22.06.2017 / 16:21

1 resposta

2
Solução

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

A saída:

g1  s1  20.17
g2  s3  94.0
g7  s1  2.28
    
por 22.06.2017 / 16:38

Tags