【发布时间】:2014-08-17 01:09:23
【问题描述】:
我有以下输入,如果“Cpd_number”和“ID3”相同,我想做几何平均。这些文件有很多数据,所以我们可能需要数组来完成这些技巧。但是,作为 awk 初学者,我不太确定如何开始。有人可以提供一些提示吗?
输入:
“ID1”,“Cpd_number”, “ID2”,”ID3”,”activity”
“95”,“123”,”4”,”5”,”10”
“95”, “123”,”4”,”5”,”100”
“95”, “123”,”4”,”5”,”1”
“95”, “123”,”4”,”6”,”10”
“95”, “123”,”4”,”6”,”100”
“95”, “456”,”4”,”6”,”10”
“95”, “456”,”4”,”6”,”100”
“95”、“123”、“4”、“5”三行应该做几何平均
两行“95”、“123”、“4”、“6”应该做几何平均
两行“95”、“456”、“4”、“6”应该做几何平均
这是所需的输出:
“ID1”,“Cpd_number”, “ID2”,”ID3”,”activity”
“95”,“123”,”4”,”5”,”10”
“95”, “123”,”4”,”6”,”31.62”
“95”, “456”,”4”,”6”,”31.62”
关于几何平均数的一些信息:
http://en.wikipedia.org/wiki/Geometric_mean
此脚本计算几何平均值
#!/usr/bin/awk -f
{
b = $1; # value of 1st column
C += log(b);
D++;
}
END {
print "Geometric mean : ",exp(C/D);
}
【问题讨论】: