[英]Comparing two tables in r
我有一個參考位置的表,像x是開始,y是結束。
|---------------------|------------------|
| x | y |
|---------------------|------------------|
| 10 | 35 |
|---------------------|------------------|
| 58 | 89 |
|---------------------|------------------|
然后我有另一個單一位置的表,我的目標是檢查第二個表中的任何位置是否在第一個表中,考慮到第二個表中的位置可以在col1和col2之間。
|---------------------|
| 12 |
|---------------------|
| 27 |
|---------------------|
| 65 |
|---------------------|
from , or even the . 我怎么能檢查這個,因為我不能使用任何 ,甚至是 。
我們可以使用foverlaps
的data.table
library(data.table)
df1 <- data.frame(x = c(10, 58), y = c(35, 89))
df2 <- data.frame(x= c(12, 27, 65), y = c(12, 27, 65))
setDT(df1, key = c('x', 'y'))
setDT(df2, key = c('x', 'y'))
foverlaps(df2, df1, type = "within", which = TRUE)$yid
#[1] 1 1 2
版本data.table
(在CRAN 2016年11月25日)引入了非equi連接 ,可以用來代替foverlaps()
:
setDT(df1)[setDT(df2), on = .(x <= z, y >= z), which = TRUE]
[1] 1 1 2 NA
請注意,第二個表與OP的數據不同,因為添加了第四行,它與任何間隔都不匹配。
df1 <- data.frame(x = c(10, 58), y = c(35, 89))
df2 <- data.frame(z = c(12, 27, 65, 90))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.