如何在R中补全含缺失月份的日期序列并填充NA?
补全缺失冬季月份的日期序列及填充NA
方法一:使用dplyr左连接实现
- 先生成覆盖目标时间段的完整日期序列作为基础表
- 通过左连接将原数据匹配到完整日期上,缺失日期对应的字段会自动填充NA
# 加载依赖包 library(dplyr) library(lubridate) # 原数据生成(你的代码) DF <- data.frame(Date = seq(as.Date("2001-01-01"), to = as.Date("2003-12-31"), by = "day"), Ob = runif(1095,1,5), Sim = runif(1095,1,5)) %>% filter(between(month(Date),3,10)) # 生成完整日期序列 full_dates <- data.frame(Date = seq(as.Date("2001-01-01"), as.Date("2003-12-31"), by = "day")) # 左连接补全数据 complete_DF <- full_dates %>% left_join(DF, by = "Date")
方法二:使用tidyr的complete函数(更简洁)
complete函数可直接扩展指定列的序列,并自动为缺失行填充NA,无需额外创建基础表
# 加载依赖包 library(dplyr) library(tidyr) library(lubridate) # 原数据生成(你的代码) DF <- data.frame(Date = seq(as.Date("2001-01-01"), to = as.Date("2003-12-31"), by = "day"), Ob = runif(1095,1,5), Sim = runif(1095,1,5)) %>% filter(between(month(Date),3,10)) # 直接补全日期序列并填充NA complete_DF <- DF %>% complete(Date = seq(as.Date("2001-01-01"), as.Date("2003-12-31"), by = "day"))
验证方式:执行filter(complete_DF, month(Date) %in% c(1,2,11,12))即可查看冬季月份的记录,对应的Ob和Sim字段已填充为NA。
内容的提问来源于stack exchange,提问作者Hydro
相关产品推荐
相关产品推荐

