You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中实现不同长度时间序列的配对绘图与对比?

不同采样频率时间序列的匹配与绘图方案(R语言)

核心需求

将两个不同时间戳、不同采样频率的传感器时间序列(温度x_values、电压y_values)匹配,绘制电压随温度变化的特性曲线,替代手动选择时间窗口计算均值的繁琐方法。

可行方案与代码示例

1. 线性插值对齐(推荐,适配连续传感器数据)

热电偶的温度与电压是连续关联的物理量,线性插值能在不丢失数据趋势的前提下,自动对齐两个序列的时间轴,无需手动设定窗口:

# 加载工具包
library(dplyr)
library(tidyr)
library(ggplot2)

# 生成包含所有时间戳的统一时间轴
all_times <- data.frame(datetime = sort(unique(c(x$x_datetime, y$y_datetime))))

# 合并两个数据集到统一时间轴
combined <- all_times %>%
  left_join(x, by = c("datetime" = "x_datetime")) %>%
  left_join(y, by = c("datetime" = "y_datetime"))

# 线性插值填充缺失值(rule=2表示边界值重复填充)
combined_interp <- combined %>%
  mutate(
    x_values = approx(datetime, x_values, datetime, rule = 2)$y,
    y_values = approx(datetime, y_values, datetime, rule = 2)$y
  )

# 绘制特性曲线
ggplot(combined_interp, aes(x = x_values, y = y_values)) +
  geom_point(size = 2, alpha = 0.7) +
  geom_line(color = "#E63946", linewidth = 1) +
  labs(x = "温度", y = "电压", title = "热电偶温度-电压特性曲线") +
  theme_minimal()

2. 最近邻匹配(适合离散采样场景)

如果不希望使用插值(比如传感器数据是离散跳变的),可以为每个数据点匹配时间上最近的另一个序列的对应值:

library(data.table)
library(ggplot2)

# 转换为data.table提升匹配效率
setDT(x)
setDT(y)

# 为每个电压数据点匹配最近的温度值
y[, matched_temp := x[.SD, on = .(x_datetime = y_datetime), roll = "nearest", x_values]]

# 绘图
ggplot(y, aes(x = matched_temp, y = y_values)) +
  geom_point(size = 2, color = "#1D3557") +
  geom_line(color = "#457B9D", linewidth = 1) +
  labs(x = "温度(最近邻匹配)", y = "电压", title = "热电偶温度-电压特性曲线(最近邻匹配)") +
  theme_minimal()

3. 专业时间序列对齐(tsibble包)

tsibble是专为时间序列设计的结构化数据工具,能更简洁地完成时间对齐与缺失值处理:

library(tsibble)
library(ggplot2)
library(zoo)

# 转换为tsibble时间序列对象
x_ts <- as_tsibble(x, index = x_datetime)
y_ts <- as_tsibble(y, index = y_datetime)

# 对齐时间轴并插值填充缺失值
aligned_ts <- full_join(x_ts, y_ts, by = "index") %>%
  fill_gaps() %>%  # 补全时间间隔
  mutate(
    x_values = na.approx(x_values),
    y_values = na.approx(y_values)
  )

# 绘图
ggplot(aligned_ts, aes(x = x_values, y = y_values)) +
  geom_point(size = 2, color = "#F1FAEE") +
  geom_line(color = "#A8DADC", linewidth = 1) +
  labs(x = "温度", y = "电压", title = "热电偶温度-电压特性曲线(tsibble对齐)") +
  theme_minimal() +
  theme(panel.background = element_rect(fill = "#1D3557"))

方案对比

  • 线性插值:最贴合热电偶连续变化的物理特性,自动化程度高,无人工窗口选择成本
  • 最近邻匹配:保留原始采样点,适合离散跳变的传感器数据
  • tsibble包:适合复杂时间序列场景,支持更灵活的时间对齐规则

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:30:48