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

R-dplyr实现非均匀时间数据下同客户同产品过去7天使用次数统计

基于dplyr的非等间隔7天滑动统计实现方案

直接配合slider包的索引滑动函数即可实现需求,无需显式循环,且天然适配时间分布不均匀的场景,性能远高于暴力双重循环实现:

前置依赖

需要安装加载以下两个包:

install.packages(c("dplyr", "slider"))
library(dplyr)
library(slider)

实现代码

# 假设你的原始数据集名为df,字段名为customer_key、product_code、timestamp
result <- df %>%
  # 生成原始行号用于最后恢复原始顺序
  mutate(orig_row = row_number()) %>%
  # 按客户、产品编码分组
  group_by(customer_key, product_code) %>%
  # 组内按时间戳升序排序
  arrange(timestamp, .by_group = TRUE) %>%
  # 基于时间戳的非等间隔滑动统计过去7天的使用次数
  mutate(usage_count_7d = slide_index_dbl(
    .x = rep(1, n()),
    .i = timestamp,
    .f = sum,
    .before = days(7)
  )) %>%
  ungroup() %>%
  # 恢复原始数据的排序
  arrange(orig_row) %>%
  select(-orig_row)

注意事项

  • 需提前将timestamp字段转换为R的标准时间格式(Date/POSIXct类型),如果是字符串格式可配合lubridate包的相关函数转换
  • 上述统计结果包含当前行本身的记录,如果需要统计当前行之前的7天次数,直接将usage_count_7d的结果减1即可
  • 100万行规模的数据集该方案运行耗时通常在秒级,远优于暴力实现的O(n²)复杂度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:36:04