1

以下に示すように、10列のデータファイルがあります

ifile.txt
2  4  4  2  1  2  2  4  2  1
3  3  1  5  3  3  4  5  3  3
4  3  3  2  2  1  2  3  4  2
5  3  1  3  1  2  4  5  6  8

10 列に沿って各行の標準偏差を表示する 11 列目を追加したいと思います。つまり、STDEV(2 4 4 2 1 2 2 4 2 1) などです。転置してから、次のコマンドを使用して再度転置することで実行できます

awk '{x[NR]=$0; s+=$1} END{a=s/NR; for (i in x){ss += (x[i]-a)^2} sd = sqrt(ss/NR); print sd}'

各行に沿って直接実行できるように、誰でも簡単な方法を提案できますか?

4

2 に答える 2

3

ワンパスでも同じことができます。

 awk '{for(i=1;i<=NF;i++){s+=$i;ss+=$i*$i}m=s/NF;$(NF+1)=sqrt(ss/NF-m*m);s=ss=0}1' ifile.txt
于 2015-07-13T21:06:00.773 に答える