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

在R中按时间分段计算时间序列指定属性的均值与标准差

按时间分段计算时间序列统计量的R实现

数据集示例

df <- data.frame(
  X = c(
    243813.672143309, 243820.16680888, 243819.847679243, 243816.851755806,
    243814.016524682, 243817.173014157
  ),
  Y = c(
    717413.771532459, 717412.74899267, 717412.77789073, 717414.049964481,
    717415.983508272, 717414.873097992
  ),
  T = as.POSIXct(
    c(
      "2021-04-01 21:30:06.186", "2021-04-01 21:30:14.186",
      "2021-04-01 21:30:22.186", "2021-04-01 21:30:30.185",
      "2021-04-01 21:30:38.185", "2021-04-01 21:30:46.185"
    ),
    tz = "GMT"
  ),
  sp = c(
    0, 6.57466869906985, 0.320435364660776, 3.25480089593961, 3.43178191624026,
    3.34610770929176
  ),
  ta = c(0, 0, 0.0658546845459325, 0.311226675793708, 0.196989706737039, 0.260257380057078),
  row.names = 1688614:1688619
)

需求

按T列(时间属性)将时间序列按每3分钟分段,计算每个分段内sp和ta的均值与标准差,避免使用循环,采用R 4.2.1中的高效方案。


方案一:tidyverse生态(dplyr + lubridate)

这是R中最常用的数据分析工作流,代码可读性强,适合大多数场景:

# 首次使用需先安装包
# install.packages(c("dplyr", "lubridate"))
library(dplyr)
library(lubridate)

# 执行分组计算
result_dplyr <- df %>%
  # 生成3分钟间隔的分组标签:将每个时间点向下取整到最近的3分钟起始时刻
  mutate(time_group = floor_date(T, unit = "3 minutes")) %>%
  # 按分组标签聚合数据
  group_by(time_group) %>%
  summarise(
    sp均值 = mean(sp, na.rm = TRUE),
    sp标准差 = sd(sp, na.rm = TRUE),
    ta均值 = mean(ta, na.rm = TRUE),
    ta标准差 = sd(ta, na.rm = TRUE),
    .groups = "drop" # 计算完成后取消分组状态
  )

# 查看结果
print(result_dplyr)

方案二:data.table(高效处理大规模数据集)

如果你的数据集行数很多(百万级以上),data.table的运算速度会远快于dplyr,适合高性能需求:

# 首次使用需先安装包
# install.packages("data.table")
library(data.table)

# 将数据框转换为data.table格式
dt <- as.data.table(df)

# 执行分组计算
result_dt <- dt[, .(
  sp均值 = mean(sp, na.rm = TRUE),
  sp标准差 = sd(sp, na.rm = TRUE),
  ta均值 = mean(ta, na.rm = TRUE),
  ta标准差 = sd(ta, na.rm = TRUE)
), by = .(time_group = floor_date(T, unit = "3 minutes"))]

# 查看结果
print(result_dt)

补充说明

  • 调整分段逻辑:可以把floor_date换成ceiling_date(向上取整到3分钟结束时刻)或round_date(四舍五入到最近的3分钟节点)
  • 缺失值处理:na.rm = TRUE用于忽略缺失值,数据无缺失可直接去掉该参数
  • 结果一致性:两种方案输出结构完全一致,可根据数据规模和个人习惯选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:45:00