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

在R中将Excel数据转换为月度时间序列的问题求助

解决方案

1. 加载所需工具包

先安装并加载处理Excel和时间序列的核心包:

# 首次运行请执行安装
install.packages(c("readxl", "tsibble", "dplyr", "lubridate"))

# 加载包
library(readxl)
library(tsibble)
library(dplyr)
library(lubridate)

2. 读取Excel并指定变量类型

读取时直接强制Unidades为字符型,避免自动转换为数值:

# 替换为你的Excel文件路径,col_types参数指定Unidades为文本类型
df <- read_excel("your_data.xlsx", 
                 col_types = c(Unidades = "text", .default = "guess"))

3. 构建年月索引并转为tsibble格式

根据数据现有结构选择对应方式:

情况1:数据已有单独的年、月列

df_ts <- df %>%
  # 合并年、月为标准年月格式,取每月首日作为时间戳
  mutate(年月 = ym(paste(年, 月, sep = "-"))) %>%
  # 转换为tsibble:Unidades作为分组键,年月作为时间索引
  as_tsibble(key = Unidades, index = 年月)

情况2:数据仅含各Unidades的月度值,无时间列

假设每个Unidades对应2014-01至2023-12的120条月度数据:

# 生成2014-2023的月度时间序列
time_seq <- seq(ymd("2014-01-01"), ymd("2023-12-01"), by = "month")

df_ts <- df %>%
  group_by(Unidades) %>%
  mutate(年月 = time_seq) %>%
  ungroup() %>%
  as_tsibble(key = Unidades, index = 年月)

4. 验证数据结构与季节性

# 查看tsibble结构
glimpse(df_ts)

# 标记月度季节信息(周期为12)
df_ts <- df_ts %>%
  mutate(季节 = month(年月, label = TRUE))

关键提示

  • 无需用rep函数,tsibble会自动维护分组时间序列的连续性,只要保证每个分组的时间索引完整即可
  • 用yearmonth()(tsibble专属函数)替代普通日期,更适配月度时间序列的分析需求

内容的提问来源于stack exchange,提问作者Lucas Medeiros dos Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:09