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

R语言将ROI按仿真时间映射到统计转储时间区间的实现方法

R语言ROI与统计转储时间区间匹配方案

现有数据说明

1. stat_dumps数据框

记录各统计转储对应的仿真时间滴答起始值(startTick)和结束值(finalTick),构造代码如下:

stat_dumps <- data.frame(rbind(list(1,101,201,301,401), list(100,200,300,400,500)))
colnames(stat_dumps) <- c("dump.1", "dump.2", "dump.3", "dump.4", "dump.5")
rownames(stat_dumps) <- c("startTick", "finalTick")

2. roi_times数据框

记录感兴趣区域(ROI)对应的仿真时间滴答起始值(begin)和结束值(end),构造代码如下:

roi_times <- data.frame(rbind(list(1,2,3,4), list(40,75,140,480), list(70,95,230,520)))
colnames(roi_times) <- c("roi.1", "roi.2", "roi.3", "roi.4")
rownames(roi_times) <- c("roi", "begin", "end")

需求说明

需将ROI按时间重叠规则匹配到对应统计转储区间,在stat_dumps中新增covered_rois行,标注每个统计转储覆盖的ROI。时间重叠判断规则为:ROI开始时间 <= 转储结束时间,且ROI结束时间 >= 转储开始时间。

实现代码

# 转换ROI数据为长表格式方便匹配
roi_df <- data.frame(
  roi_id = colnames(roi_times),
  begin = as.numeric(roi_times["begin", ]),
  end = as.numeric(roi_times["end", ])
)

# 遍历每个统计转储区间匹配对应ROI
matched_rois <- sapply(colnames(stat_dumps), function(dump_col) {
  dump_start <- stat_dumps["startTick", dump_col]
  dump_end <- stat_dumps["finalTick", dump_col]
  hit_rois <- roi_df$roi_id[roi_df$begin <= dump_end & roi_df$end >= dump_start]
  return(ifelse(length(hit_rois) == 0, "", paste(hit_rois, collapse = ",")))
})

# 新增匹配结果行到stat_dumps
stat_dumps["covered_rois", ] <- matched_rois

结果示例

运行代码后得到的stat_dumps如下:

dump.1dump.2dump.3dump.4dump.5
startTick1101201301401
finalTick100200300400500
covered_roisroi.1,roi.2roi.3roi.3roi.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:05