У меня есть файл file.dat с 24 (строками) x 16 (столбцами) данных.
Я уже протестировал следующий awk script, который вычисляет среднее значение для каждого столбца.
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
и он записывает значения во втором столбце, но они не являются правильным значением стандартного отклонения. Вычисление отклонения некорректно. Я был бы очень признателен за любую помощь. Отношения