如何获取文件中排序值的中位数?

假设我的文件对数字进行了排序,如下所示:

1
22
36
45
53

我希望能够获得 36。另一方面,如果文件的行数为偶数,例如:

1
22
36
45
53
67

我想要平均值 (36+45)/2。

我想我当然可以使用 wc 来获取行数并处理中间的行。但是有没有更优雅的方法来获得中位数?

回答

这是一个awk版本,没有那么优雅datamash

$ seq 6 | awk '{a[NR]=$1} END{m=int(NR/2)+1; print (NR%2?a[m]:(a[m-1]+a[m])/2)}'
3.5


以上是如何获取文件中排序值的中位数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>