采用逐秒数据并将其转换为每小时数据?

时间:2017-03-31 23:49:33

标签: aggregate

所以,我有一个包含每秒采样值的数据集。

我想转换具有第二个数据的上述数据集,以便每小时对其进行索引。每小时的价值是当天的总和。

我在搜索中找不到任何类似内容,所以如果有人能指出我最好的方法来找到实现这一目标的最佳方法;非常感谢!

1 个答案:

答案 0 :(得分:1)

这实际上取决于您使用什么来实现它以及应用程序的更大上下文,但通常在大多数情况下运行总和相当简单。例如,如果您使用的语言如Matlab中的语言,则有一些函数可以让您对数组中的所有内容求和(就像在Excel中一样)。其他语言也有可以调用的库或软件包,如果您使用的是比C更高的级别,我建议您查找。

但是,我们假设您要编写自己的函数来执行此操作。跳到我脑海中的方式是通过数据数组进行单次迭代。假设您的数组中包含 n 元素。使用循环,指定变量,并在每次循环迭代中,通过总和增加值,例如:

my $sum = $dataArray[0]; # running sum tracker, initialize to first value for ($i=1; $i < <length of your array>; $i++) { $sum += $dataArray[$i]; }

最后,这个循环会有复杂度O( n )。然后我还会在循环中添加一个条件,将索引$ i的总和抛入其他数据结构,并使用$ i对其进行索引,当$ i是一小时内的秒数(3600个样本)时。我最喜欢这样做的方法可能是用于映射$i => $sum对的哈希或关联数组,因为这样我就可以完全跟踪切断每个运行总和的位置。但是,如果你愿意编写代码将你的1:n索引转换成&#34; time&#34;那么,没有理由使用简单的旧数组就足够了。并假设它们对应于&#34;小时0,小时1,小时2 ....&#34;。

警告:如果您这样做,我提醒您,没有任何内容可以替代您的数据时间戳。在编写脚本时,采样率可能会出现硬件漂移或逼近错误,如果您不小心,这可能会导致数据会计出现严重的时间偏差。