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

使用dplyr在R数据框中补全缺失小时并填充NA

R数据框缺失小时记录补全方案(基于dplyr实现)

前置依赖

需要搭配dplyr和tidyr包使用,tidyr的complete函数是补全行的核心工具,二者均属于tidyverse生态,和dplyr语法完全兼容。

实现步骤

1. 数据格式预处理

先确保datex字段为标准日期类型,避免后续匹配出错:

library(dplyr)
library(tidyr)

mydata <- mydata %>%
  mutate(datex = as.Date(datex, format = "%Y/%m/%d"))

2. 补全缺失记录

提供两种常用方案,按需选择:

方案一:全局补全所有日期的全时段记录

自动给数据中所有存在的日期补全0-23时的全部小时记录,缺失的sales默认填充为NA,通用性最强:

mydata_complete <- mydata %>%
  complete(datex, hourx = 0:23)

方案二:仅补全指定日期的缺失小时

如果仅需要补全问题中提到的3个日期的缺失记录,其余日期保持原有不变,可使用以下代码:

mydata_complete <- mydata %>%
  group_by(datex) %>%
  group_modify(~ if (cur_group()$datex %in% as.Date(c("2021-07-04", "2021-07-31", "2021-08-08"))) {
    complete(.x, hourx = 0:23)
  } else {
    .x
  }) %>%
  ungroup()

3. 结果验证

可通过以下代码查看目标日期的补全效果:

mydata_complete %>%
  filter(datex %in% as.Date(c("2021-07-04", "2021-07-31", "2021-08-08"))) %>%
  arrange(datex, hourx) %>%
  print(n = Inf)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:09:05