【问题标题】:awk - calculate the mean age if condition is metawk - 如果满足条件,计算平均年龄
【发布时间】:2021-12-23 05:25:35
【问题描述】:

我正在尝试使用 awk 计算显示列表中满足说西班牙语要求的所有用户的平均年龄,即“native_lang”或“other_lan”。

user,gender,age,native_lang,other_lang
24,F,21,finnish,english swedish spanish 
25,F,26,finnish,english swedish
26,M,20,polish,english spanish finnish 
27,M,25,finnish,english french 
28,F,21,russian,finnish english french 
29,F,28,finnish,english swedish
30,F,19,finnish,english swedish french spanish 
31,O,40,finnish,swedish english german russian lithuanian portuguese
32,F,22,finnish,swedish english french
33,M,26,spanish,english german french
34,F,20,finnish,swedish english german

我是这样开始代码的,但我不确定count 是否可以用于对变量的内容求和。

awk -F ',' '$4~/spanish/ || $5~/spanish/ {count $3} 
            END {printf("%.2f%\n", ??????)}'

预期的结果应该如下所示:21.50

提前谢谢你。

【问题讨论】:

  • 在您能想到的任何其他编程语言中,如何将存储在$3 中的值添加到名为count 的变量中?为什么不在 awk 中尝试呢?同样使用printf 打印变量的值。
  • @EdMorton,我是编程的新用户,所以我很难弄清楚如何分配值
  • fwiw,在awk calculate mean average 上的 google 搜索会带来很多点击,其中大部分展示了基本操作,例如递增变量、添加变量、执行平均值/平均值计算

标签: awk


【解决方案1】:

好的开始,但要保存总数和计数

awk -F ',' '$4~/spanish/ || $5~/spanish/ {count++;tot+= $3} 
            END {printf("%.2f\n", tot/count)}'

【讨论】:

  • 注意如果没有匹配到spanish,则除以0,得到division by zero attempted
猜你喜欢
  • 2017-10-06
  • 1970-01-01
  • 2017-04-20
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 2021-10-31
相关资源
最近更新 更多