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

在R语言数据框中将周列数据分组合并为月列并求和

R语言按周列合并为按月列并求和汇总

示例数据构造

先构造一个匹配需求的示例数据框,包含周标识列和多个以日期命名的周数据列:

df <- data.frame(
  "Calendar year / week" = c("2023-W01", "2023-W02", "2023-W05", "2023-W06"),
  "2023-01-02" = c(10, 15, NA, NA),
  "2023-01-09" = c(20, 25, NA, NA),
  "2023-02-06" = c(NA, NA, 30, 35),
  "2023-02-13" = c(NA, NA, 40, 45)
)

方法一:使用tidyverse工具链(推荐)

借助dplyr、tidyr和lubridate包完成数据转换与聚合:

library(tidyverse)

monthly_df <- df %>%
  # 宽格式转长格式,便于按月份分组处理
  pivot_longer(cols = -`Calendar year / week`, names_to = "date", values_to = "value") %>%
  # 将列名日期转为标准格式,提取年-月作为分组键
  mutate(month = format(ymd(date), "%Y-%m")) %>%
  # 按周标识和月份分组,对数值求和(忽略NA)
  group_by(`Calendar year / week`, month) %>%
  summarise(total = sum(value, na.rm = TRUE), .groups = "drop") %>%
  # 长格式转回宽格式,得到按月划分的结果列
  pivot_wider(names_from = month, values_from = total)

运行后输出结果:

# A tibble: 4 × 3
  `Calendar year / week` `2023-01` `2023-02`
  <chr>                      <dbl>     <dbl>
1 2023-W01                     30         0
2 2023-W02                     40         0
3 2023-W05                      0        70
4 2023-W06                      0        80

方法二:Base R实现

如果不想加载第三方包,用Base R也能完成需求:

# 提取数值列(排除周标识列)
value_cols <- df[, -which(names(df) == "Calendar year / week")]
# 将列名转为日期格式,提取年-月作为分组依据
col_months <- format(as.Date(colnames(value_cols)), "%Y-%m")
# 对每行数据按月份分组求和
monthly_sums <- t(apply(value_cols, 1, function(x) tapply(x, col_months, sum, na.rm = TRUE)))
# 合并原周标识列与求和结果
monthly_df_base <- cbind(df[, "Calendar year / week", drop = FALSE], as.data.frame(monthly_sums))

注意事项

  • 若存在跨年度的周(比如12月底的周对应下一年1月的日期),可添加年份校验逻辑,确保分组符合业务需求:
    mutate(
      date = ymd(date),
      month = format(date, "%Y-%m"),
      # 从周标识中提取年份
      week_year = str_extract(`Calendar year / week`, "^\\d{4}") %>% as.integer(),
      date_year = year(date)
    ) %>%
    filter(week_year == date_year)
    
  • na.rm = TRUE用于忽略缺失值,若需保留NA可移除该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:55:25