合并近似相同时间序列,按分钟取整时间处理传感器数据
合并存在时间戳偏移的同频率时间序列
你有两个来自不同传感器的10分钟间隔时间序列,因时间戳设置差异,起始时间差了3分钟。直接用merge()会因为时间戳不匹配生成大量NA值,以下是两种忽略时间偏移、按观测顺序合并的方法:
方法一:按观测位置直接合并(忽略原时间戳)
适合不需要保留原时间戳,仅需对应观测配对的场景:
# 将xts对象转为普通数据框,提取数值列 df_y <- data.frame(value_y = coredata(y)) df_y1 <- data.frame(value_y1 = coredata(y1)) # 按行合并两个数据框 merged_df <- cbind(df_y, df_y1) # 可选:添加统一时间戳(比如用第一个序列的时间戳) merged_df$timestamp <- index(y) # 若需要转回xts格式 merged_xts <- xts(merged_df[, c("value_y", "value_y1")], order.by = merged_df$timestamp)
方法二:对齐时间戳后合并
适合需要保留统一时间基准的场景(两个序列采样频率完全一致,仅起始偏移,替换时间戳安全):
# 将第二个序列的时间戳替换为第一个序列的时间戳 index(y1) <- index(y) # 直接合并,无NA值 merged <- merge(y, y1, all = TRUE)
合并后示例结果
> merged y y1 2024-04-11 14:03:00 1 3 2024-04-11 14:13:00 3 4 2024-04-11 14:23:00 4 10 2024-04-11 14:33:00 2 6 2024-04-11 14:43:00 3 25 2024-04-11 14:53:00 3 2 2024-04-11 15:03:00 4 3 2024-04-11 15:13:00 10 4 2024-04-11 15:23:00 6 2 2024-04-11 15:33:00 25 3
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

