2016-05-03 64 views
0

我正在嘗試使用$3中的值與awk中的值的總和來匹配$2行。我的下面的嘗試沒有取得預期的結果。我做錯了什麼,但不知道是什麼。謝謝 :)。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

相關問題