这是玩具示例。我要比较ra
,给出范围(例如时间)和 ev
,表示事件发生的时间。
我想新建一个专栏hits
在 ra
这表示每个范围内发生了多少事件。
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
结果应该是这样的。
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
最佳答案
我们可以在 data.table
中使用非对等连接
library(data.table)
setDT(ev)[ra, .(hits = .N), on = .(time > a, time < b), by = .EACHI]
关于r - 计算 R 中范围内的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54814910/