我有很多两列文件。第一列包含变量数字,而第二列包含这些数字的“真实”值。
IE
file 1
41619.442 41586.441
41474.2539 41586.441
41587.539062 41586.441
41623.996094 41586.441
如何根据第 2 列计算第 1 列的标准差?我尝试修改常见的:
awk '{delta = $1 - avg; avg += delta / NR; mean2 += delta * ($1 - avg); } END { print sqrt(mean2 / NR); }'
要得到
awk '{a=$2}{delta = $1 - a; a += delta / NR; a*2 += delta * ($1 - a); } END { print sqrt(a*2 / NR); }' 11978.08984 >> test1.txt
但没有好的结果。
答案1
答案2
对于此类问题,请看一下datamash
:
datamash -W pstdev 1 < file1
在许多其他功能之间,在 datamash 中,您有一个
pstdev 1
= 第 1 列的总体标准差sstdev 1
= 第 1 列的样本标准差