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

如何在R中读取.data格式数据并构建时间序列对象

R语言宽表转时间序列长表实现方案

依赖包

首先加载用到的工具包:

library(tidyverse)
library(lubridate)
library(tsibble)

SOI数据处理代码

# 读取原始数据,skip参数用于跳过文件开头的说明行,可根据实际文件调整行数
soi_raw <- read_table("soi.data", skip = 7, col_names = c("Year", month.abb))

# 宽转长+格式转换
soi_clean <- soi_raw %>%
  # 将12个月份列从宽格式转为长格式
  pivot_longer(cols = -Year, names_to = "Month", values_to = "SOI") %>%
  # 拼接生成年月字段,转为<mth>类型
  mutate(YearMonth = yearmonth(my(paste(Month, Year)))) %>%
  # 按需求保留指定列
  select(YearMonth, SOI)

# 可选:将占位缺失值-99.99转为标准NA值
# soi_clean <- soi_clean %>% mutate(SOI = na_if(SOI, -99.99))

ONI数据处理代码

逻辑和SOI完全一致,仅调整读取参数和值列名即可:

# 读取原始数据
oni_raw <- read_table("oni.data", skip = 8, col_names = c("Year", month.abb))

# 格式转换
oni_clean <- oni_raw %>%
  pivot_longer(cols = -Year, names_to = "Month", values_to = "ONI") %>%
  mutate(YearMonth = yearmonth(my(paste(Month, Year)))) %>%
  select(YearMonth, ONI)

# 可选:替换占位缺失值
# oni_clean <- oni_clean %>% mutate(ONI = na_if(ONI, -99.9))

处理完成后soi_clean和oni_clean就是符合需求格式的数据集,可直接用于后续时间序列分析。

内容的提问来源于stack exchange,提问作者Rodrigo H. Ozon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:54:07