2016-05-03 17 views
0

$2行の合計を$3の値の合計をawkとして平均化しようとしています。以下の私の試みは、望ましい結果をもたらさなかった。私は何か間違っているが、何がわからないのか。ありがとうございました :)。awkはファイル内の一致する文字列を平均化する

入力

chr7:83016288-83016376 SEMA3E 70.3 
chr7:83606437-83606522 SEMA3A 78.6 
chr7:83640327-83640417 SEMA3A 79.2 
chr8:61693548-61693999 CHD7 83.4 
chr8:61714076-61714162 CHD7 86.5 

所望の出力 --- 3小数

SEMA3A 76.0 
CHD7 84.9 

AWK試行1

awk '{cnt[$2]++ } {sum += $3 } END { if (NR > 0) print sum/NR }' input 
79.6 -- average of all lines in input 

awkの試み2

awk '{cnt+=$2; num+=$3} END{print "avg="cnt/num}' input 
avg=0 -- not sure what this is calculating 

答えて

2
$ awk '{sum[$2]+=$3; count[$2]++} 
    END{for(k in sum) printf "%s %.1f\n", k, sum[k]/count[k]}' file 

CHD7 85.0 
SEMA3A 78.9 
SEMA3E 70.3 
+0

ありがとうございました:)。 – Chris

関連する問題