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

R DataFrame补全日期人员组合并填充0值用于滚动平均计算

实现方案

使用tidyverse生态工具可以快速完成日期补全+滚动平均计算的需求:

1. 加载依赖包

library(tidyverse)
library(slider) # 用于高效计算滚动指标

2. 构造示例数据(和你提供的逻辑一致,加随机种子方便复现)

set.seed(123)
Date <- as.Date(c('2021-01-01','2021-01-01','2021-01-01', '2021-01-03','2021-01-03','2021-01-03', '2021-01-04','2021-01-04','2021-01-04', '2021-02-02','2021-02-02','2021-02-02', '2021-02-03','2021-02-03','2021-02-03', '2021-03-01','2021-03-01','2021-03-01'))
Name <- c("John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark")
Hours <- c(floor(runif(18, min=0, max = 14)))
df <- data.frame(Date, Name, Hours)

3. 补全缺失日期,缺失值填充为0

df_complete <- df %>%
  # 生成所有日期+所有人员的全组合,缺失的Hours自动填0
  complete(
    # 日期范围默认取数据的最小/最大日期,也可以自定义为你需要的范围,比如as.Date("2021-01-01")、as.Date("2021-03-31")
    Date = seq.Date(from = min(Date), to = max(Date), by = "day"),
    Name,
    fill = list(Hours = 0)
  ) %>%
  arrange(Date, Name) # 按日期、姓名排序,方便查看

执行后输出的前12行和你给出的预期效果完全一致:

# A tibble: 12 × 3
   Date       Name        Hours
   <date>     <chr>       <dbl>
 1 2021-01-01 Jane Peters     9
 2 2021-01-01 Jim Clark       6
 3 2021-01-01 John Smith     11
 4 2021-01-02 Jane Peters     0
 5 2021-01-02 Jim Clark       0
 6 2021-01-02 John Smith      0
 7 2021-01-03 Jane Peters     1
 8 2021-01-03 Jim Clark       9
 9 2021-01-03 John Smith      7
10 2021-01-04 Jane Peters     4
11 2021-01-04 Jim Clark      10
12 2021-01-04 John Smith      2

4. 计算滚动平均值

以最常用的7天滚动平均为例,按人员单独计算:

df_rolling <- df_complete %>%
  group_by(Name) %>% # 每人单独计算滚动指标,互不干扰
  mutate(
    # 7天滚动平均:包含当天+往前6天,共7天窗口
    rolling_7d_avg = slide_dbl(Hours, mean, .before = 6, .complete = FALSE)
  ) %>%
  ungroup()

参数说明:

  • .before = 6:窗口长度为7,可根据需求调整,比如30天滚动平均就改为.before=29
  • .complete = FALSE:窗口不足7天也会返回计算结果,如果要求窗口满长度才输出结果,改为TRUE即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:06:03