我有一些用分号分隔的数据。第一列显示固定时间步长。在第二列和第三列中,您可以看到部分不完整的数据:
输入.txt
14.09.2016:00:00:00;;100
14.09.2016:00:00:01;-1;
14.09.2016:00:00:02;0;300
14.09.2016:00:00:03;;
14.09.2016:00:00:04;;
14.09.2016:00:00:05;;
14.09.2016:00:00:06;4;
14.09.2016:00:00:07;;
14.09.2016:00:00:08;;
14.09.2016:00:00:09;16;307
如何使用 awk 或 gawk 对具有空值的数据点之间的每一列进行局部线性插值?:
输出.txt
14.09.2016:00:00:00;-2;100
14.09.2016:00:00:01;-1;200
14.09.2016:00:00:02;0;300
14.09.2016:00:00:03;1;301
14.09.2016:00:00:04;2;302
14.09.2016:00:00:05;3;303
14.09.2016:00:00:06;4;304
14.09.2016:00:00:07;8;305
14.09.2016:00:00:08;12;306
14.09.2016:00:00:09;16;307
已经有一个 gawk 脚本,它仅对此处可用的第一个和最后一个数据点上的每一列进行全局插值:Using awk to interpolate data column based in a data file with date and time
最佳答案
考虑到线性时间,数据中的值看起来不是线性的。如果您仍然想使用线性插值,则应该将数据分成几部分,例如使用 this对于每个部分并再次组合这些部分。找到正确的部分似乎是另一个问题,也许只是在数据列中查找值,一旦找到第二个值,在它后面剪切,然后再次从该特定行继续,如下所示(仅考虑第一个数据列($2
):
14.09.2016:00:00:00;;100
14.09.2016:00:00:01;-1;
14.09.2016:00:00:02;0;300
14.09.2016:00:00:02;0;300
14.09.2016:00:00:03;;
14.09.2016:00:00:04;;
14.09.2016:00:00:05;;
14.09.2016:00:00:06;4;
14.09.2016:00:00:06;4;
14.09.2016:00:00:07;;
14.09.2016:00:00:08;;
14.09.2016:00:00:09;16;307
在考虑第二个数据列(最后一个字段,$3
)时,您可以(必须)合并第二个和第三个部分。
另外,请阅读this .
关于linux - 使用 (g)awk 使用日期和时间部分插入基于列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634900/