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

在R中如何用前一交易日数据填充缺失日期的对应字段值

R语言时间序列缺失日期补全实现方法

你可以结合tidyr的complete和fill两个函数实现需求,无需手动指定缺失的具体日期,代码可自动适配任意连续日期范围的补全需求,完整实现代码如下:

# 加载依赖包(tidyverse包含tidyr和dplyr)
library(tidyverse)

# 读取原始数据集(你提供的dput结构直接赋值即可)
df <- structure(list(Date = c("2020-10-28", "2020-10-29", "2020-10-30", 
"2020-11-02", "2020-11-03", "2020-11-04", "2020-11-05", "2020-11-06", 
"2020-11-09", "2020-11-10"), Open = c(1384L, 1297L, 1283L, 1284L, 
1263L, 1224L, 1194L, 1196L, 1207L, 1200L), High = c(1384L, 1297L, 
1283L, 1284L, 1263L, 1224L, 1194L, 1196L, 1207L, 1200L), Low = c(1384L, 
1297L, 1283L, 1284L, 1263L, 1224L, 1194L, 1196L, 1207L, 1200L
), Close = c(1384L, 1297L, 1283L, 1284L, 1263L, 1224L, 1194L, 
1196L, 1207L, 1200L), Adjusted_close = c(1384L, 1297L, 1283L, 
1284L, 1263L, 1224L, 1194L, 1196L, 1207L, 1200L), Volume = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(NA, 10L), class = "data.frame")

# 补全缺失日期并填充数值
df_filled <- df %>%
  # 将字符串格式的日期转换为日期类型,方便生成连续序列
  mutate(Date = as.Date(Date)) %>%
  # 生成数据集覆盖范围内的所有连续日期,补全缺失的行
  complete(Date = seq.Date(min(Date), max(Date), by = "day")) %>%
  # 所有列向前填充,缺失值自动沿用前一交易日的数值
  fill(everything(), .direction = "down")

# 如需导出为csv文件可执行以下代码
# write.csv(df_filled, "补全后行情数据.csv", row.names = FALSE)

运行后得到的df_filled就是你需要的结果,所有缺失的非交易日都会自动补全,数值完全继承前一个交易日的对应字段值,和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:45:04