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

如何用tbl_period的区间信息统计tbl_activity各时段的活动数量与平均强度

R双tibble时段匹配统计实现方案

现有两个tibble结构如下:

  • tbl_period:存储各时段的id、名称、开始与结束时间,其中时段名称存在重复
  • tbl_activity:存储每条活动记录的发生时间、强度值

需求为tbl_period新增两列,分别统计每个时段范围内的活动总条数、活动强度平均值,需按id, period分组避免重名时段统计错误。

实现代码

基于你提供的示例数据,可直接使用以下代码完成统计:

library(tidyverse)

# 核心统计逻辑
tbl_period_with_stat <- tbl_period %>%
  # 按要求用id+period分组,避免重名时段混淆
  group_by(id, period) %>%
  mutate(
    # 统计当前时段内的活动总条数
    activity_total = sum(tbl_activity$time >= start & tbl_activity$time <= end),
    # 统计当前时段内的活动强度平均值,无匹配活动时返回NA
    avg_intensity = mean(tbl_activity$intensity[tbl_activity$time >= start & tbl_activity$time <= end])
  ) %>%
  ungroup()

# 查看结果
head(tbl_period_with_stat)

可选优化写法

如果数据量较大,也可以用非等值连接的方式提升性能:

tbl_period_with_stat <- tbl_period %>%
  left_join(tbl_activity, join_by(between(y$time, x$start, x$end))) %>%
  group_by(id, period) %>%
  summarise(
    activity_total = n(),
    avg_intensity = mean(intensity, na.rm = TRUE),
    start = first(start),
    end = first(end),
    .groups = "drop"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:36:02