bash - 如何获取文件中排序值的中位数?
问题描述
假设我的文件对数字进行了排序,如下所示:
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
推荐阅读
- javascript - 在悬停某些文本时在表格单元格上使用工具提示时出现问题。并且需要被表头固定
- spring-boot - 无法在应用引擎标准环境 (GCP) 中部署预构建映像
- c - 如何连接 LPTSTR 与 char 数组?
- python - 为什么在 Keras 的自定义层中不能使用权重约束和 dropout 函数
- google-cloud-platform - 如何使用谷歌云功能定期将数据写入谷歌云SQL
- javascript - CRUD 操作后反应更新组件
- vb.net - 如何修复:rfc2898DeriveBytes 和 AES 加密的“填充无效且无法删除”错误?
- angular - 反应式表单:Angular formarrays 和 formcontrols
- html - 动态添加的 vue 组件不渲染
- c# - C#:如何要求对方法进行错误处理?