我有一个包含 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”有一列包含这些平均值。
与平均计算类似,我想计算数据文件“file.dat”每一列的标准偏差,并将其写入输出文件的第二列。也就是说,我想要一个输出文件,其中第一列中的平均值和第二列中的标准偏差。
我一直在做不同的测试,比如这个
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
它在第二列中写入值,但它们不是标准偏差的正确值。偏差的计算在某种程度上是不正确的。我将非常感谢任何帮助。问候