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

如何在R中基于ts对象按年份绘制箱线图?

按年份为时间序列对象绘制箱线图

要实现按年份绘制箱线图,核心是从ts对象中提取每个观测对应的年份作为分组变量,再传入boxplot函数即可。

方法1:基础R实现(无需额外包)

通过time()获取每个观测的时间戳,再用floor()提取年份的整数部分:

# 创建时间序列数据
data <- runif(240)
data_ts <- ts(data, start = c(2000, 1), frequency = 12)

# 提取年份分组
year_groups <- floor(time(data_ts))

# 按年份绘制箱线图
boxplot(data_ts ~ year_groups, 
        xlab = "年份", 
        ylab = "观测值", 
        main = "各年份观测值箱线图")

方法2:借助lubridate包(更直观)

如果习惯用日期处理工具,可通过lubridate::year()直接提取年份:

library(lubridate)

# 将时间戳转为Date类型后提取年份
year_groups <- year(as.Date(time(data_ts)))

# 绘制箱线图
boxplot(data_ts ~ year_groups, 
        xlab = "年份", 
        ylab = "观测值", 
        main = "各年份观测值箱线图")

说明

  • time(data_ts)返回十进制格式的时间(例如2000年1月对应2000.0,2000年12月对应2000.9167),floor()取整后即可得到对应年份。
  • 两种方法都能实现按年份分组绘制箱线图,基础R方法无需依赖额外包,更轻量化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:15:58