在R中填充时间序列时如何避免重复值?

时间:2018-08-01 15:42:15

标签: r xts

我有以下具有小时值的时间序列:

initMap

由于测量失败,时间序列存在间隙,我需要在一年中的每一天将测量值与最大和最小小时理论值进行比较。因此,我需要在从时间序列的开始日期到结束日期的每小时时间戳记中使用str(ts_GM) # An 'xts' object on 2016-07-29 01:00:00/2017-09-01 containing: # Data: num [1:7348, 1] 0 0 0 0 NA NA NA NA NA NA ... # Indexed by objects of class: [POSIXct,POSIXt] TZ: UTC # xts Attributes: # NULL head(ts_GM) # [,1] # 2016-07-29 01:00:00 0 # 2016-07-29 02:00:00 0 # 2016-07-29 03:00:00 0 # 2016-07-29 04:00:00 0 # 2016-07-29 06:00:00 NA # 2016-07-29 07:00:00 NA tail(ts_GM) # [,1] # 2017-08-31 19:00:00 0 # 2017-08-31 20:00:00 0 # 2017-08-31 21:00:00 0 # 2017-08-31 22:00:00 0 # 2017-08-31 23:00:00 0 # 2017-09-01 00:00:00 0 值来填补空白。

我尝试过:

NA

但是有些值是重复的,因为时间序列的最终长度是9695,应该是9576。如何在不重复值的情况下做到这一点?

1 个答案:

答案 0 :(得分:1)

在无法看到实际数据的情况下,我猜测您在ts_GM中的某些条目不在确切的小时边界上。例如。也许您有一个“ 2016-07-29 05:00:01”或“ 2016-07-29 04:59:59”条目。因此,当dates_GM的条目为“ 2016-07-29 05:00:00”时,它不会被视为重复项,因此会被创建为新项。

因此,解决方法是在合并之前整理ts_GM的索引。 (如果您认为这是问题所在,但不知道如何解决,请添加注释-我将查找一些我四舍五入到最接近一小时的代码。)

(我还建议时区可能很重要,但我认为这不能解释120个元素之间的差异;但是,通常,所有计算都使用UTC)