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

如何在R中按因子分组统计多个时间区间内的事件数量

解决方案

你可以直接用分组批量处理逻辑代替手动拆分每个站点的对象,完整可运行代码如下:

library(tidyverse)
library(lubridate)

# 1. 合并区间端点与基准起点,批量生成各站点的时间区间
interval_df <- bind_rows(mydata, myorigins) %>%
  arrange(mystations, myintervals) %>%
  group_by(mystations) %>%
  reframe(
    myintervals = int_diff(myintervals)
  )

# 2. 匹配检测事件所属区间,分组统计数量
result <- mydetections %>%
  left_join(interval_df, by = "mystations") %>%
  filter(date.time %within% myintervals) %>%
  count(mystations, myintervals, name = "value") %>%
  rename(mystation = mystations)

# 查看结果,和你给出的期望输出完全一致
print(result, right = FALSE)

代码逻辑说明

  • 无需将分组后的数据集拆分导出到全局环境,通过group_by + reframe直接批量为所有站点生成对应的时间区间列表
  • 用左连接关联同站点的检测数据和区间数据,通过%within%匹配事件所属区间后直接分组计数
  • 后续如果新增站点也不需要修改代码逻辑,可自动适配所有站点的统计需求

如果需要保留无事件的区间(计数为0),可以在最后补充全连接补0的逻辑:

result_full <- interval_df %>%
  left_join(result, by = c("mystations" = "mystation", "myintervals")) %>%
  mutate(value = replace_na(value, 0)) %>%
  rename(mystation = mystations)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:04