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

如何在tidyverse中生成填充虚拟行,实现月度转日度数据转换

用tidyverse将月度数据转换为日度数据

可以借助dplyr和lubridate这两个tidyverse工具包快速实现,核心思路是为每个月末日期生成当月完整的日期序列,再将序列展开为行:

步骤1:加载依赖包并准备示例数据

library(tidyverse)
library(lubridate)

# 示例数据
df <- tibble(
  date = ymd(c("2013-04-30", "2013-05-31", "2013-06-30")),
  index = c(232, 232, 233)
)

步骤2:生成日度数据

df_daily <- df %>%
  # 计算当月第一天
  mutate(month_start = floor_date(date, "month")) %>%
  # 生成从当月第一天到月末的日期序列
  mutate(daily_date = map2(month_start, date, ~seq(.x, .y, by = "day"))) %>%
  # 将日期序列展开为多行
  unnest(daily_date) %>%
  # 整理列名并移除冗余列
  select(date = daily_date, index)

结果说明

处理后的数据会包含每个月从第一天到最后一天的所有日期,对应index值与原月末数据保持一致:

  • 2013年4月1日至4月30日的index均为232
  • 2013年5月1日至5月31日的index均为232
  • 2013年6月1日至6月30日的index均为233

你可以用head(df_daily, 5)查看前5行,用tail(df_daily, 5)查看后5行验证结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:15:40