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