计算色谱柱的平均值和标准偏差

时间:2014-06-24 08:26:58

标签: bash awk

i    z    r                    

1   -30   3.5                 
2   -30   3.4                 
3   -30   3.6                  
...                             
10  -30   4.2                  
1   -29.5 4.6                 
2   -29.5 2.8                  
3   -29.5 3.4                    
....
10  -29.5 3.6
1   -29.0 2.5
2   -29.0 2.6
3   -29.0 3.0

我有一个内容为3列(上图)的文件。除了第一行(i z r),我的数据文件有600行。首先,我考虑使用命令将第3列拆分为10行连续段,然后使用另一个脚本计算每个段的均值和SD(“i”从1到10)。之后,我想将所有结果放入一个文件(result.dat)。结果文件将如下所示内容为3列:    z表示SD 我尝试了下面的脚本。但是我不知道如何将它们组合在一个脚本文件中。

10 = split($3, array, " ")

BEGIN {n=0 ; s=0; ss =0}
NF=10 {n++; s+= $3; ss == $3;}
END {
means=(s)/10
SD=sqrt((ss-m)*(ss-m))/10 
prin $2 $means $SD}' data.dat >> result.dat

请帮帮我。非常感谢你。

1 个答案:

答案 0 :(得分:0)

#!/usr/bin/awk -f
    { s += $3; ss += $3*$3;
      if ($1 == 10)
      { print $2, s/10, sqrt((ss-s*s/10)/10) >"result.dat"; s = ss = 0 }
    }