计算 R 中范围内的数值

mil*_*lan 3 r range dataframe

这是玩具示例。我想比较ra,它给出了范围(例如,时间)和ev,它表示事件发生的时间。

我想创建一个新专栏hitsra说明每个范围内发生了多少事件。

ra <- data.frame(a=c(0, 250, 500, 750), b=c(250, 500, 750, 900))
ra
    a   b
1   0 250
2 250 500
3 500 750
4 750 900

ev <- data.frame(events=c(1,1,1,1,1), time=c(100, 200, 450, 550, 600))
ev
  events time
1      1  100
2      1  200
3      1  500
4      1  550
5      1  600
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的。

data.frame(a=c(0, 250, 500, 750), b=c(250, 500, 750, 900), hits=c(2,1,2,0))
    a   b hits
1   0 250    2
2 250 500    1
3 500 750    2
4 750 900    0
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以使用非对等加入 data.table

library(data.table)
setDT(ev)[ra, .(hits = .N), on = .(time > a, time < b), by = .EACHI]
Run Code Online (Sandbox Code Playgroud)