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

R语言实现相同周数跨年份行迭代部分求和的方法咨询

实现方案

实现思路

  • 拆分year_week字段,提取出独立的年份、周数字段,以周数作为分组维度
  • 按周数分组后,同组的所有行都是不同年份的同一周数据,用组内input总和减去当前行的input值,即可得到排除当前行后其他年份同周数的求和结果
  • 针对仅2000年存在的第53周,按需求特殊处理,将求和结果替换为当前行input原值

完整代码

首先修正示例数据的语法错误,再执行计算逻辑:

library(dplyr)
set.seed(123)
# 构造示例数据
year_week <- c(200045:200053, 200145:200152, 200245:200252)
input <- as.vector(sample(1:10,25,TRUE))
df <- data.frame(year_week, input)

# 计算partial_sum
df <- df %>%
  # 拆分年、周字段
  mutate(
    year = as.integer(substr(year_week, 1, 4)),
    week = as.integer(substr(year_week, 5, 6))
  ) %>%
  # 按周数分组
  group_by(week) %>%
  mutate(
    # 同组总和减当前值得到其他年份同周数的和
    partial_sum = sum(input) - input,
    # 特殊处理仅出现一次的53周
    partial_sum = ifelse(week == 53 & n() == 1, input, partial_sum)
  ) %>%
  ungroup() %>%
  # 可选:移除临时生成的年、周字段
  select(-year, -week)

结果验证

打印输出df即可查看计算结果,完全匹配需求:

  • 普通周数(45-52周)的partial_sum为另外两年同周数的input之和
  • 2000年第53周的partial_sum等于当前行的input值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:45:02