awk :
awk 'NR==FNR{ a[$1]=$2; next };{ len=split($4,b,","); s=0;
for(i=1;i<=len;i++) s+=a[b[i]]; $6=s/$5 }1' file2 OFS='\t' file1 | column -tx
A saída:
1 100 371 R1,R2,R4 12 0.0416667
5 167 16 R2,R5 5 0.066
8 242 490 R1,R3,R4 11 0.0440909
-
a[$1]=$2
- capturando chaves / valores do segundo arquivo -
split($4,b,",")
- dividindo o quarto campo do primeiro arquivo em matriz de "chaves" -
len
- número de blocos -
s+=a[b[i]]
- acumulando valores para as "chaves" correspondentes