BEGIN { FS=OFS="\t" } FILENAME==ARGV[1] { if (FNR==1) next g=$2 if (!(g in total)) groups[++ng]=g total[g]++ if ($4=="missing") missing[g]++ if ($4=="rejected") rejected[g]++ next } FILENAME==ARGV[2] { if (FNR==1) next g=$2 if (!(g in maximum) || $3>maximum[g]) maximum[g]=$3 used[g]++; sum[g]+=$3 } END { print "group","n_total","n_used","n_missing","n_rejected","mean","max" for (i=1;i<=ng;i++) for (j=i+1;j<=ng;j++) if (groups[j] "/dev/stderr"; exit 3 } printf "%s\t%d\t%d\t%d\t%d\t%s\t%s\n",g,total[g],used[g],missing[g],rejected[g],(used[g] ? sprintf("%.2f",sum[g]/used[g]) : "NA"),(used[g] ? sprintf("%.2f",maximum[g]) : "NA") } }