我有一个包含2列值的.txt文件。它们是2D坐标,因此第一列表示x值,第二列是z值。不幸的是,有些行具有相同的x值但具有不同的z值。我想计算z值的平均值,以便将单个z与单个x相关联。 我所拥有的样本是:
435.212 108.894
435.212 108.897
435.212 108.9
435.212 108.903
如您所见,x值435.212与4个不同的z值相关联。 我想拥有的是:
435.212 108.8985
其中108.8985是(108.894 + 108.897 + 108.9 + 108.903)/ 4的结果。 当然我不想修改其他x和z值,所以结果会是这样的:
在:
435.238 108.9
435.25 108.9
435.262 108.9
435.275 108.9
435.212 108.894 <---
435.212 108.897<---
435.212 108.9<---
435.212 108.903<---
在:
435.238 108.9
435.25 108.9
435.262 108.9
435.275 108.9
435.212 108.8985 <---average
与单个x关联的z值的数量可能会有所不同。
我正在使用linux命令行,虽然我使用awk作为工作,但我可以在linux命令行上使用的任何其他程序/实用程序都可以。
答案 0 :(得分:1)
这是awk
的一种方式:
$ awk '{a[$1]+=$2; ++b[$1]} END {for (i in a) print i, a[i]/b[i]}' file
435.212 108.899
435.25 108.9
435.238 108.9
435.262 108.9
435.275 108.9
{a[$1]+=$2; ++b[$1]}
a
中。b
中。 END {for (i in a) print i, a[i]/b[i]}'
要使用其他数字格式(例如4个浮点值),您还可以使用:
printf "%d %.4f\n", i, a[i]/b[i]