我有以下具有小时值的时间序列:
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。如何在不重复值的情况下做到这一点?
答案 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)