24 (行) x 16 (列) のデータを持つ 'file.dat' があります。
各列の平均を計算する次の awk スクリプトは既にテスト済みです。
touch aver-std.dat
awk '{ for (i=1; i<=NF; i++) { sum[i]+= $i } }
END { for (i=1; i<=NF; i++ )
{ printf "%f \n", sum[i]/NR} }' file.dat >> aver-std.dat
出力「aver-std.dat」には、これらの平均を含む 1 つの列があります。
平均計算と同様に、データ ファイル 'file.dat' の各列の標準偏差を計算し、それを出力ファイルの 2 列目に書きたいと思います。つまり、最初の列に平均値、2 番目の列に標準偏差を含む出力ファイルが必要です。
私はこのようなさまざまなテストを行ってきました
touch aver-std.dat
awk '{ for (i=1; i<=NF; i++) { sum[i]+= $i }}
END { for (i=1; i<=NF; i++ )
{std[i] += ($i - sum[i])^2 ; printf "%f %f \n", sum[i]/NR, sqrt(std[i]/(NR-1))}}' file.dat >> aver-std.dat
2列目に値を書き込みますが、標準偏差の正しい値ではありません。偏差の計算がなぜか正しくありません。助けていただければ幸いです。よろしく