我的文件有问题。输入文件的示例如下
A 0.234
B 0.345
A 0.43
B 0.323
A 0.78
B 0.45
F 0.89
L 0.34
F 0.21
L 0.3
F 0.1
我需要计算每个字母的平均表达式,这样输出就会类似于这个
A 0.4813
B 0.3727
F 0.4
L 0.32
我已经设计了我的代码,这样它就可以在文件中找到只包含一个字母的行,并计算文件中每个字母的比例。我的问题是,我是否可以继续使用这些假设来计算平均表达式,因为我不知道如何计算每个字母并添加其相应的值。
这是我的代码,stackflow的一位合作伙伴帮我完成了。
awk 'length($0)==1{a[$0]++} END{for(c in a) print c, a[c]/NR}'
您可以使用此awk
:
awk '{sum[$1] += $2; ++freq[$1]} END {for (i in freq) printf "%st%.4fn", i, sum[i]/freq[i]}' file
A 0.4813
B 0.3727
F 0.4000
L 0.3200
即使你特别要求awk
,当已经有很多工具为这样的工作设计时,你为什么要重新发明轮子,例如GNU datamash:
datamash -Wsg 1 mean 2 < yourFile
打印
A 0.48133333333333
B 0.37266666666667
F 0.4
L 0.32