【发布时间】:2020-07-01 08:23:41
【问题描述】:
我有一个数据文件如下:
ifile.txt
-10 /
-9 /
-8 /
-7 3
-6 4
-5 13
-4 16
-3 17
-2 23
-1 26
0 29
1 32
2 35
3 38
4 41
5 40
6 35
7 30
8 25
9 /
10 /
这里的“/”是缺失值。我想计算线性趋势,直到 y 轴上的最大值(即,直到第二列中的值“41”)。所以它应该从以下数据计算趋势:
-7 3
-6 4
-5 13
-4 16
-3 17
-2 23
-1 26
0 29
1 32
2 35
3 38
4 41
其他 (x, y) 将不考虑,因为 (4, 41) 之后的 y 值小于 41
以下脚本适用于所有值:
awk '!/\//{sx+=$1; sy+=$2; c++;
sxx+=$1*$1; sxy+=$1*$2}
END {det=c*sxx-sx*sx;
print (det?(c*sxy-sx*sy)/det:"DIV0")}' ifile.txt
但我无法做到最大价值
For the given example the result will be 3.486
【问题讨论】: