如何从第 4 列中的值获取最大值、最小值和平均值

如何从第 4 列中的值获取最大值、最小值和平均值

我有这样的数据结构

X   43808504    G   1   ^]. <
X   43808505    C   3   .   4
X   43808506    T   8   .   ?
X   43808507    G   5   .   C

我想从第 4 列获取最大值 (8)、最小值 (1) 和平均值 (4.25),并将其写入文件。

我一直在努力进行排序,然后删除数据,但这似乎效率很低。

谢谢你的帮助

答案1

使用awk

awk 'NR == 1 { min = $4; max = $4 }
{
    sum += $4
    if ($4 > max) {
        max = $4
    }
    if ($4 < min) {
        min = $4
    }
} END {
    print max
    print min
    print sum / NR
}' input

首先我们将minandmax变量设置为第 1 行第 4 列的值,稍后我们将检查第 4 列中的每个值,看看它是否小于min或大于当前值max,如果是则设置min价值。

然后我们创建一个sum变量,其中包含第 4 列所有值的总和。稍后,该变量将用于通过将总和除以总行数来计算平均值。

最后我们打印最大值、最小值和平均值。

答案2

磨坊主

$ mlr --nidx --repifs stats1 -a 'min,max,mean' -f 4 data
1 8 4.250000

您可以按照通常的方式将输出重定向到文件,方法是添加> file

GNU 数据混合

$ datamash -W min 4 max 4 mean 4 < data
1   8   4.25

相关内容