我有2个数据帧在那里,我需要找到有多少次的项模拟$num属范围内的x-y规定的范围据框.
id <- c(1:9)
num <- c(99,101,199,250,999,1500,3000,4000,5000)
mock <- data.frame(id, num)
x <- c(100,100,200,1000,4000,4000)
y <- c(198,200,300,2000,5000,5000)
range <- data.frame(x,y)
所需的产出如下所示
id num check
1 99 0
2 101 2
3 199 1
4 250 1
5 999 0
6 1500 1
7 3000 0
8 4000 2
9 5000 2
这可以通过以下代码
mock$check <- mapply(
function(x){
count = 0
for (i in 1:nrow(range)){
if (x >= range$x[i] & x <= range$y[i]){
count = count + 1
}
}
paste0(count)
},
mock$num
)
上述做法是不适合大型数据集,因为循环和我试图用一个非同等参加的方法(通过 data.table
). 但是,我坚持如何做一个非同等加入两个表之间(不知道该如何继续进行。)
nonequi <- mock[range, on =.(num >= x, num <=y),]
想要寻求某些指导,以这个问题。 感谢您的帮助。