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

如何在R语言中统计各时间区间内的事件时间戳数量?

解决时间区间内事件数量统计问题

问题原因

直接用mutate(sum(events %within% interval))出现长度不匹配且结果错误,是因为interval是整列向量,events %within% interval会生成一个行数等于事件数、列数等于区间数的逻辑矩阵,直接sum会把所有元素求和,而非按行统计每个区间对应的事件数。

解决方案

方法1:用rowwise()逐行处理

先加载所需包,对数据框按行分组后,逐行计算每个区间内的事件数:

library(lubridate)
library(dplyr)
library(tibble)

# 构造规范数据(显式转换日期格式)
table <- tibble( 
    start = ymd(c( "2022-08-02", "2022-10-06", "2023-01-11")), 
    end = ymd(c("2022-08-04", "2023-02-06", "2023-02-04")), 
    interval = start %--% end
)

events <- ymd(c("2022-08-07", "2022-10-17", "2023-01-17", "2023-02-02"))

# 逐行统计事件数量
result <- table %>%
  rowwise() %>%
  mutate(event_count = sum(events %within% interval)) %>%
  ungroup()

print(result)

方法2:用purrr::map_int遍历区间

若不想用rowwise(),可借助purrr的映射函数逐个处理每个区间元素:

library(purrr)

result <- table %>%
  mutate(event_count = map_int(interval, ~sum(events %within% .x)))

print(result)

结果说明

运行后会得到新增event_count列的表格,对应每个区间的事件数:

  • 第一个区间2022-08-02至2022-08-04:0个事件
  • 第二个区间2022-10-06至2023-02-06:3个事件
  • 第三个区间2023-01-11至2023-02-04:2个事件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:41:05