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

使用complete与seq按月份扩展日期失败,求解决方案

按分组扩展日期序列的正确实现

你之前的代码问题在于未按id分组处理,seq直接作用于整个dates_from和dates_to列,无法为每个id单独生成对应日期序列。正确做法是先分组,再在每组内生成序列并填充对应值:

正确代码

library(tidyverse)

# 原始数据
df <- tibble(id = c('x1', 'x2'),
             dates_from = c(as.Date('2022-01-31'), as.Date('2022-10-31')),
             dates_to = c(as.Date('2022-08-31'), as.Date('2022-12-31')),
             value = c(0,1))

# 扩展日期序列
df2 <- df %>%
  group_by(id) %>%
  # 为每组生成从dates_from到dates_to的月度日期序列
  complete(dates = seq(from = dates_from, to = dates_to, by = "1 month")) %>%
  # 填充每组对应的value值
  fill(value) %>%
  ungroup() %>%
  # 调整列顺序匹配预期输出
  select(id, dates, value)

运行结果

# A tibble: 11 × 3
   id    dates      value
   <chr> <date>     <dbl>
 1 x1    2022-01-31     0
 2 x1    2022-02-28     0
 3 x1    2022-03-31     0
 4 x1    2022-04-30     0
 5 x1    2022-05-31     0
 6 x1    2022-06-30     0
 7 x1    2022-07-31     0
 8 x1    2022-08-31     0
 9 x2    2022-10-31     1
10 x2    2022-11-30     1
11 x2    2022-12-31     1

关键说明

  • group_by(id):确保每个id单独处理自身的起止日期
  • complete(dates = seq(...)):在每组内生成连续的月度日期序列
  • fill(value):将每组原始的value值填充到扩展后的所有行中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:40:43