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

多列日数据按月差异化聚合后合并为月度DataFrame的技术问询

问题:多列日数据按月聚合并合并为完整月度DataFrame

数据样式

DateLahontan.Hydrologic InflowcfsLahontan.Pool ElevationftLahontan.Surface AreaacreLahontan.Storageacre-ftCarsonAtFtChurchill.Gage Inflowcfs
1966-10-0286.74123.2903.563000.1
1966-10-0334.04123.2876.555100
1966-10-04-72.84123.2844.545700
..................

现有单列聚合代码

avgHI <- ddply(mdf, "month", summarise, `Lahontan.Hydrologic Inflowcfs` = mean(`Lahontan.Hydrologic Inflowcfs`))
totalCRInflow <- ddply(mdf, "month", summarise, `CarsonAtFtChurchill.Gage Inflowcfs` = sum(`CarsonAtFtChurchill.Gage Inflowcfs`))
# etc....

解决方案

你之前的做法会丢失年份信息(仅按1-12月分组),且多次聚合后合并容易出错。推荐用以下步骤一次性完成聚合并生成完整时间序列的DataFrame:

1. 处理日期并按年月分组聚合

先将日期列转为标准日期格式,提取年月组合作为分组键,然后对每列应用对应的聚合规则:

library(dplyr)
library(lubridate)

# 转换日期格式,生成年月分组键
mdf <- mdf %>%
  mutate(Date = ymd(Date),
         year_month = floor_date(Date, "month")) # 把日期统一到当月第一天,作为时间索引

# 一次性完成多列不同规则的月度聚合
monthly_agg <- mdf %>%
  group_by(year_month) %>%
  summarise(
    # 按你的需求替换各列的聚合函数
    `Lahontan.Hydrologic Inflowcfs` = mean(`Lahontan.Hydrologic Inflowcfs`, na.rm = TRUE),
    `Lahontan.Pool Elevationft` = mean(`Lahontan.Pool Elevationft`, na.rm = TRUE),
    `Lahontan.Surface Areaacre` = max(`Lahontan.Surface Areaacre`, na.rm = TRUE),
    `Lahontan.Storageacre-ft` = last(`Lahontan.Storageacre-ft`, na.rm = TRUE),
    `CarsonAtFtChurchill.Gage Inflowcfs` = sum(`CarsonAtFtChurchill.Gage Inflowcfs`, na.rm = TRUE)
  ) %>%
  ungroup()

2. 生成完整月度序列并合并

生成1960年1月到2022年12月的完整时间序列,通过左连接确保所有月份都被覆盖:

# 生成目标时间范围的完整月度序列
full_month_seq <- tibble(year_month = seq(ymd("1960-01-01"), ymd("2022-12-01"), by = "month"))

# 左连接聚合结果,缺失的月份会填充NA,可按需替换为0或其他值
full_monthly_df <- full_month_seq %>%
  left_join(monthly_agg, by = "year_month")

# 可选:将年月格式转为字符串(如"1960-01")
full_monthly_df <- full_monthly_df %>%
  mutate(year_month = format(year_month, "%Y-%m"))

关键说明

  • 用year_month(年+月)作为分组键,避免单纯按month分组丢失年份维度
  • 一次性聚合减少代码冗余,避免多次ddply后合并的索引错误
  • 左连接完整序列确保覆盖1960年代至2022年的所有月度,无缺失时间步长

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:05:19