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

使用floor_date按日期分组并补全缺失日期的R技术求助

解决方案

步骤说明

  1. 生成20年时间分组:用lubridate::floor_date()将每个日期向下取整到最近的20年区间起始日。
  2. 按国家+时间分组汇总:同时以Country和生成的20年分组为维度,计算n的总和。
  3. 补全缺失组合:用tidyr::complete()生成所有国家与20年区间的组合,缺失的n值填充为0。

完整代码

# 加载所需包
library(dplyr)
library(lubridate)
library(tidyr)

# 处理数据
df_processed <- df_period5 %>%
  # 为每个日期生成对应的20年区间起始日
  mutate(yearbin = floor_date(period5, "20 years")) %>%
  # 按国家和20年区间分组,汇总n的总和
  group_by(Country, yearbin) %>%
  summarize(sum_n = sum(n), .groups = "drop") %>%
  # 补全所有国家与20年区间的组合,缺失值填0
  complete(
    # 覆盖原始数据中所有国家
    Country = unique(df_period5$Country),
    # 生成从最早到最晚日期对应的20年区间序列
    yearbin = seq(
      floor_date(min(df_period5$period5), "20 years"),
      floor_date(max(df_period5$period5), "20 years"),
      by = "20 years"
    ),
    # 缺失的sum_n填充为0
    fill = list(sum_n = 0)
  )

代码解释

  • floor_date(period5, "20 years"):将日期归到最近的20年区间起始点(例如1939年归到1920-01-01,1950年归到1940-01-01)。
  • group_by(Country, yearbin):同时按国家和20年区间分组,确保汇总维度符合需求。
  • complete(...):生成所有可能的国家-区间组合,用fill参数将无数据的组合的sum_n设为0,补全缺失的日期分组。

内容的提问来源于stack exchange,提问作者Aby Ramata Almamy Mbaye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:55:33