GVKun编程网logo

bash – awk计算平均值或零(awk求平均数)

7

如果您对bash–awk计算平均值或零和awk求平均数感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解bash–awk计算平均值或零的各种细节,并对awk求平均数进行深入的分析,此外还有关于as

如果您对bash – awk计算平均值或零awk求平均数感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解bash – awk计算平均值或零的各种细节,并对awk求平均数进行深入的分析,此外还有关于asp.net – Datagrid:计算页脚中列的平均值或总和、awk – 获得每行平均值、AWK 脚本帮助格式化列的平均值、awk 计算数据的和和平均值的实用技巧。

本文目录一览:

bash – awk计算平均值或零(awk求平均数)

bash – awk计算平均值或零(awk求平均数)

我正在计算一堆文本文件中的一堆数字的平均值,如下所示:
grep '^num' file.$i | awk '{ sum += $2 } END { print sum / NR }'

但有时文件不包含模式,其中cas我希望脚本返回零.这个略有修改的单线的任何想法?

你通过产生一个额外的过程来完成第一个可以做的所有事情,从而增加你的负载(平均值).一起使用’grep’和’awk’是一个红旗.你最好写:
awk '/^num/ {n++;sum+=$2} END {print n?sum/n:0}' file

asp.net – Datagrid:计算页脚中列的平均值或总和

asp.net – Datagrid:计算页脚中列的平均值或总和

我有一个数据网格绑定到数据集,我想在页脚中显示填充整数的列的平均结果.

我的方式,有两种我能想到的方法:

1.“使用来源,卢克”
在我调用DataGrid.DataBind()的代码中,使用DataTable.Compute()方法(或者在我的情况下使用DataSet.DataTable(0).Compute()).例如:

Dim strAverage = DataTable.Compute("Avg(ColumnName)","")

但是一旦我有这个,我怎么能把它插入页脚?

2.“为荣耀而战”
使用DataGrid.ItemDataBound事件,并计算每个ListItemType.Item和ListItemType.AlternatingItem的运行总计,最后显示在ListItemType.Footer中.例如:

Select Case e.Item.ItemType
    Case ListItemType.Item,ListItemType.AlternatingItem
        runningTotal += CInt(e.Item.Cells(2).Text)
    Case ListItemType.Footer
        e.Item.Cells(2).Text = runningTotal/DataGrid.Items.Count
End Select

这只是感觉不对,而且我必须确保在每个DataBind上重置runningTotal.

有没有更好的办法?

解决方法

我不知道两者是否一定更好,但另外两种方式是:

>一旦敲击页脚并从屏幕上的文本计算,就手动穿过表格
>手动检索数据并与绑定分开进行计算

当然,#2有点抵消了数据绑定的优势(假设你正在做的事情).

awk – 获得每行平均值

awk – 获得每行平均值

我有这种格式的大型数据集

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 脚本帮助格式化列的平均值

AWK 脚本帮助格式化列的平均值

你需要这个脚本。您可以将其另存为:program.awk。我添加了 END 块以在最终打印平均值。

#!/usr/bin/awk -f    
{                                                                                                                                                                      
    if(NR == 1){                                                                                       
        printf "%s \t %28s %7s %7s %7s %7s\n","Name","Exam 1","Exam 2","Exam 3","Exam 4","Average"   
    }                                                                                                                                                                               
    else{                                                                                              
        examSTUAVG = ($3 + $4 + $5) / 4;                                                           
        printf "%s \t %28s %7s %7s %7s %7.1f\n",$1,$2,$3,$4,$5,examSTUAVG                    

        {exam1Total += $2}                                                                         
        {exam2Total += $3}                                                                         
        {exam3Total += $4}                                                                         
        {exam4Total += $5}                                                                         
    }                                                                                              
}
                                                                                               
END{    
    myrows=NR-1
    printf "Exam 1 Average is %19.1f\n",exam1Total / myrows
    printf "Exam 2 Average is %19.1f\n",exam2Total / myrows                                       
    printf "Exam 3 Average is %19.1f\n",exam3Total / myrows
    printf "Exam 4 Average is %19.1f\n",exam4Total / myrows                                    
} 

输入是文件 data.txt

Name Exam 1 Exam 2 Exam 3 Exam 4 Average

Joe 0.0 75 87 91
John 0.0 86 72 83

并执行它:

./program.awk data.txt

我得到了这个输出:

Name                           Exam 1  Exam 2  Exam 3  Exam 4 Average
Joe                               0.0      75      87      91    63.2
John                              0.0      86      72      83    60.2
Exam 1 Average is                 0.0
Exam 2 Average is                80.5
Exam 3 Average is                79.5
Exam 4 Average is                87.0

awk 计算数据的和和平均值

awk 计算数据的和和平均值

awk 计算数据的和和平均值

2014年12月02日 21:11:12 HaveFunInLinux 阅读数:14487更多
个人分类: 小技巧
 

本文译至:http://d.hatena.ne.jp/leetmikeal/20130117/1358423717

有如下的log文件:


最右边的数值表示数据。计算一下数据的和。

最开始的{} ,定义sum变量,累加数据。

最后,在END内 print sum 输出和.

然后,计算一下平均值。

今天关于bash – awk计算平均值或零awk求平均数的讲解已经结束,谢谢您的阅读,如果想了解更多关于asp.net – Datagrid:计算页脚中列的平均值或总和、awk – 获得每行平均值、AWK 脚本帮助格式化列的平均值、awk 计算数据的和和平均值的相关知识,请在本站搜索。

本文标签: