You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于第二、第三列重复行计算第一列平均值(awk实现)

按地理坐标对(第2、3列)分组计算第1列平均值的Awk解决方案

你的原Awk脚本存在两个核心问题:

  • 仅以第2列作为分组键,未将第3列纳入分组条件,无法区分同一经度/纬度下不同的坐标对
  • 错误地累加第3列数值、统计第3列行数,而非针对第1列计算平均值

修正后的Awk命令

{ key = $2 FS $3; sum[key] += $1; count[key]++ }
END {
    for (k in sum) {
        print k, sum[k]/count[k]
    }
}

命令说明

  • key = $2 FS $3:用第2列+第3列的组合作为唯一分组键,FS为默认字段分隔符(空格),确保每个地理坐标对的唯一性
  • sum[key] += $1:累加每个坐标对分组下第1列的数值总和
  • count[key]++:统计每个坐标对分组的行数
  • 循环遍历所有分组键,输出坐标对和对应的第1列平均值

自定义输出格式(可选)

如果需要指定平均值的小数位数(比如保留2位),可以用printf替代print:

{ key = $2 FS $3; sum[key] += $1; count[key]++ }
END {
    for (k in sum) {
        printf "%s %.2f\n", k, sum[k]/count[k]
    }
}

示例验证

输入数据:

100 116.3 39.9
200 116.3 39.9
150 120.1 30.2
250 120.1 30.2
300 120.1 30.2

输出结果(保留2位小数版本):

116.3 39.9 150.00
120.1 30.2 233.33

内容的提问来源于stack exchange,提问作者Gery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:55:59