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

在R的dplyr中按行实现日期范围的向量化展开

解决方案:将日期区间展开为每日行

这问题我之前处理类似时间序列数据时也碰到过,用tidyverse套件里的工具就能轻松实现需求,下面是具体步骤:

1. 准备示例数据

先还原你的输入数据集(方便测试验证):

library(tidyverse)

# 模拟你的原始tibble
original_df <- tibble(
  ref_key = c("123", "123", "123"),
  start_date = as.Date(c("2010-01-08", "2010-01-21", "2010-03-10")),
  end_date = as.Date(c("2010-01-13", "2010-01-23", "2010-04-14"))
)

2. 展开日期区间为单行日期

核心思路是按行生成每个日期区间的每日序列,再将暂存的列表列展开为独立行:

expanded_df <- original_df %>%
  # 按行处理每个单独的日期区间
  rowwise() %>%
  # 生成从start到end的每日日期序列,存为列表列暂存
  mutate(date = list(seq(start_date, end_date, by = "day"))) %>%
  # 将列表列中的日期拆分为独立行
  unnest(date) %>%
  # 保留你需要的两列
  select(ref_key, date)

运行后就能得到你想要的结果:每行对应一个ref_key和单个日期,完全匹配需求格式。

补充说明

  • rowwise()确保每个行的日期区间被单独处理,不会把所有行的日期混在一起生成序列
  • seq(start_date, end_date, by = "day")负责生成连续的每日日期,存为列表是为了能在tibble中暂存多值数据
  • unnest(date)是关键步骤,把每个列表里的日期拆分成独立的行,完成格式转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:20