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

时间序列插值:月度数据转15天间隔日频数据

月度时间序列插值生成15天间隔数据

步骤1:转换日期格式

将原始数据中的date列从"月-年"格式转换为标准日期(约定为当月首日):

library(lubridate)
# 解析"月-年"格式并转为日期类型,默认日为1
df$date <- parse_date_time(df$date, orders = "my") %>% as.Date()

步骤2:生成目标日期序列

按需求创建15天间隔的目标日期序列:

DateSeq <- data.frame(date = seq(as.Date("2016-09-01"), as.Date("2020-07-30"), by=15))

步骤3:创建含缺失值的数据框

合并原始数据与目标日期序列,得到包含所有目标日期、原始观测值(缺失值标记为NA)的数据框:

library(dplyr)
merged_df <- DateSeq %>% left_join(df, by = "date")

步骤4:执行线性插值(优先方案)

使用approx()函数对sp1列做线性插值,填充缺失值:

merged_df$sp1_linear <- approx(x = merged_df$date, y = merged_df$sp1, xout = merged_df$date, method = "linear")$y

可选:三次插值实现

如果需要三次插值,可替换为以下方式:

# 方式1:使用approx的spline参数
merged_df$sp1_spline <- approx(x = merged_df$date, y = merged_df$sp1, xout = merged_df$date, method = "spline")$y

# 方式2:直接调用spline函数
spline_res <- spline(x = df$date, y = df$sp1, xout = merged_df$date)
merged_df$sp1_spline2 <- spline_res$y

结果示例

处理后的merged_df以日期为索引,包含原始观测值、线性插值结果和可选的三次插值结果,前几行输出如下:

head(merged_df)
#         date     sp1 sp1_linear sp1_spline sp1_spline2
# 1 2016-09-01 2.58868    2.58868    2.58868     2.58868
# 2 2016-09-16      NA    1.54941    1.78728     1.78728
# 3 2016-10-01 0.51014    0.51014    0.51014     0.51014
# 4 2016-10-16      NA   -0.15076   -0.20434    -0.20434
# 5 2016-11-01 -0.81165   -0.81165   -0.81165    -0.81165
# 6 2016-11-16      NA   -0.66870   -0.73105    -0.73105

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:55:21