gpt4 book ai didi

awk - 获取每行平均值

转载 作者:行者123 更新时间:2023-12-04 14:04:54 28 4
gpt4 key购买 nike

我有一个这种格式的大数据集

HF TLLL A T 0.999 NA 0.666 NA 0.566 NA NA 0.87
HF TLLM A T 0.500 0.500 0.666 0.566 NA NA 0.87

我想计算每行的平均值,从第 5 列开始到行尾,并忽略字符串 NA .然后将平均值附加到每行的末尾。

输出将如下所示:
HF TLLL A T 0.999 NA 0.666 NA 0.566 NA NA 0.87 0.775
HF TLLM A T 0.500 0.500 0.666 0.566 NA NA 0.87 0.620

我一直在得到这样的总和,但无法弄清楚如何跟踪求和的整数数量,以计算平均值。
awk '{x=0;for(i=5;i<=NF;i++)x=x+$i;print $0, x}'

最佳答案

$ cat file
HF TLLL A T 0.999 NA 0.666 NA 0.566 NA NA 0.87
HF TLLM A T 0.500 0.500 0.666 0.566 NA NA 0.87
HF TLLM A T NA NA NA NA NA NA NA

$ awk '{sum=cnt=0; for (i=5;i<=NF;i++) if ($i != "NA") { sum+=$i; cnt++ } print $0, (cnt ? sum/cnt : "NA") }' file
HF TLLL A T 0.999 NA 0.666 NA 0.566 NA NA 0.87 0.77525
HF TLLM A T 0.500 0.500 0.666 0.566 NA NA 0.87 0.6204
HF TLLM A T NA NA NA NA NA NA NA NA

三元表达式避免了输入行 3 上的除以零错误,其中每个数据字段都是“NA”。

关于awk - 获取每行平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com