我想同样平均命名变量的列表,例如:AWK或者grep的估计平均
Blue 0.2
Blue 0.3
Blue 0.6
Red 0.4
Red 0.9
Green 0.5
而获得;
Blue 0.3666667
Red 0.65
Green 0.5
这可能吗?
我想同样平均命名变量的列表,例如:AWK或者grep的估计平均
Blue 0.2
Blue 0.3
Blue 0.6
Red 0.4
Red 0.9
Green 0.5
而获得;
Blue 0.3666667
Red 0.65
Green 0.5
这可能吗?
尝试:
awk '{A[$1]=A[$1]+$2;if(!C[$1]++){i++};B[i]=$1;} END{for(j=1;j<=i;j++){printf("%s %.03f\n",B[j],A[B[j]]/C[B[j]])}}' Input_file
会添加解释不久了。
EDIT1:现在过于成功地添加了非线性形式的解决方案。
awk '{
A[$1]=A[$1]+$2;
if(!C[$1]++){
i++
};
B[i]=$1;
}
END{
for(j=1;j<=i;j++){
printf("%s %.03f\n",B[j],A[B[j]]/C[B[j]])
}
}
' Input_file
使用AWK的多维数组:
awk '{ a[$1]["s"]+=$2; a[$1]["c"]++ }
END{ for(i in a) print i,a[i]["s"]/a[i]["c"] }' OFS='\t' file
a[$1]["s"]+=$2
- 总结值相同颜色
a[$1]["c"]++
- 重复计数颜色
输出:
Red 0.65
Blue 0.366667
Green 0.5
使用awk可以使两个数组,一个让每个颜色和量一个用于计数的总和,然后打印平均值为结束:
awk '{ a[$1]+=$2;b[$1]++ } END { for (i in a) print i"\t"a[i]/b[i] }' file
@EdMorton感谢您的反馈:)。你完全正确,我已经更新了我的答案。 – archemiro
你有什么试过? – hek2mgl