如何在R中合并宽格式降雨数据的年月日为时间序列索引
R语言降雨宽表转时间序列适配长表方案
首先确保你已经安装加载了 tidyverse 系列工具包:
# 未安装可先运行 install.packages(c("tidyverse", "lubridate")) library(tidyverse) library(lubridate)
假设你的原始宽表tibble命名为rain_wide,核心转换代码如下:
rain_long <- rain_wide %>% # 宽表转长表,匹配所有Day开头的日期列 pivot_longer( cols = starts_with("Day"), names_to = "day_num", values_to = "RAINFALL" ) %>% # 提取日序号、拼接生成标准日期 mutate( day_num = str_remove(day_num, "Day") %>% as.integer(), # 自动处理无效日期(如2月30日、4月31日会生成NA) DATE = ym(`Year-Month`) + days(day_num - 1) ) %>% # 过滤无效日期、保留要求的两列 filter(!is.na(DATE)) %>% select(DATE, RAINFALL)
关键逻辑说明:
pivot_longer函数会将所有Day开头的列从宽格式拉伸为长格式,RAINFALL列直接存储对应单日降雨量数值- 日期拼接时
ym()会自动解析YYYY-MM格式的年月字段为当月1号的日期,加减天数自动适配不同月份的天数规则 - 若你的「Year-Month」字段为非标准格式,将
ym(Year-Month)替换为适配你数据的日期解析函数即可
转换完成后可运行glimpse(rain_long)验证:DATE列应为Date类型,RAINFALL列为数值类型,符合时间序列预测的输入要求。
内容的提问来源于stack exchange,提问作者geekfromgeekville
相关产品推荐
相关产品推荐

