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

基于dplyr按时间戳计算跨时段累计和的实现方法咨询

累计激活率计算问题解答

可行性说明

可以单步实现该需求,你当前分年度单独赋值的写法冗余度高,后续新增年份还要重复编写过滤逻辑,用聚合+累计求和的方式可以一步得到所有年份的累计激活率结果。

推荐工具包

  • 推荐使用R语言tidyverse生态下的dplyr+lubridate组合,是业内做结构化数据统计的常用工具包,无需额外复杂配置即可实现需求。
  • 如果不想引入过多依赖,仅用dplyr也可以完成计算,只需调整年份提取逻辑即可。

实现代码

# 加载依赖包
library(dplyr)
library(lubridate)

# 单步计算所有年份的累计激活率
cum_activate_result <- activate_rate %>%
  # 从join_day中提取入职年份,如果join_day是字符格式且前四位为年份,也可替换为 substr(join_day,1,4)
  mutate(join_year = year(ymd(join_day))) %>%
  # 按入职年份分组,汇总单年的激活人数和总样本量
  group_by(join_year) %>%
  summarise(
    year_activate_num = sum(if_activate),
    year_total_num = n()
  ) %>%
  # 按年份升序排序后计算累计值
  arrange(join_year) %>%
  mutate(
    cum_activate_num = cumsum(year_activate_num),
    cum_total_num = cumsum(year_total_num),
    # 累计激活率 = 累计激活人数 / 累计总样本量,和你原代码逻辑完全一致
    cum_activate_rate = cum_activate_num / cum_total_num
  )

结果使用说明

最终输出的cum_activate_result表中,每一行的cum_activate_rate即为截止到对应年份的累计激活率:

  • 2019行的结果对应你原代码的activate_2019
  • 2020行的结果对应你原代码的activate_2020
  • 以此类推,后续新增年份无需修改代码即可自动计算对应累计值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 09:15:08