我有两个文本文件,每个文件的第一列包含覆盖相同时间但不同速率的时间戳(第二个文件有更多样本)。但是,由于缺乏精确度,我收集的一些数据(位于这些文本文件的其他列中)在同一时间戳内会有所不同。
例如,这是第二个文件的摘录
Timestamp RobotYaw
1375448725 -2.183439
1375448725 -2.173082
1375448725 -2.169424
和第一个文件:
Timestamp State
1375448725 8
1375448725 9
我想要做的是创建一个输出文件,它是第二个文件的副本(有更多样本),但有一个额外的列指定当前状态(在第一个文件中给出)。然而,在上述情况下,由于时间戳不够精确,我不知道从状态 8 到 9 的变化何时发生,并且我选择了具有该时间戳的前半部分样本具有状态 8,而另一半状态 9。
我正在努力用 Perl 做到这一点。现在,它将始终为具有该时间戳的所有样本提供可用的最新状态 (9)...
这是当前程序的骨架,只保留了最小值(这应该打印第二个文件中的所有时间戳以及当前状态):
my $state = 1;
while ( my $ligne = <SECONDFILE> )
{
my ( $timestamp , $junk ) = split ( /\s/ , $ligne ) ;
while ( my $checkline = <FIRSTFILE> )
{
my ( $stateTimestamp , $stateJunk ) = split ( /\s/ , $checkline ) ;
if ( int($timestamp) < int($stateTimestamp) )
{
last;
}
else
{
$state = $stateJunk;
}
}
print OUTPUT $timestamp;
print OUTPUT " ";
print OUTPUT $state;
print OUTPUT "\n";
}
您知道我如何在一个时间戳内轻松处理这种任意的状态变化吗?由于很难解释,感谢您的阅读,如果您有任何问题,我很乐意进一步解释...