r - 根据 R 中的范围值加入 2 个数据框
问题描述
假设我有 2 个数据框,列的开头和结尾没有重复,按每个范围排序。例如:
df1:
start end
10 20
21 35
37 50
df2:
start end
12 15
17 19
22 24
26 29
31 40
43 46
我想获得一个基于范围的连接操作的新数据框,df2
该范围在df1
如下范围内:
range.df1 range.df2
10:20 12:15
10:20 17:19
21:35 22:24
21:35 26:29
21:35 31:35
37:50 37:40
37:50 43:46
有人可以告诉我如何在 R 中实现这一点吗?
解决方案
这是一个选项foverlaps
library(data.table)
setDT(df1, key = names(df1))
setDT(df2, key = names(df2))
foverlaps(df1, df2)[, .(range.df1 = paste(i.start, i.end, sep=":"),
range.df2 = paste(start, end, sep=":"))]
# range.df1 range.df2
#1: 10:20 12:15
#2: 10:20 17:19
#3: 21:35 22:24
#4: 21:35 26:29
#5: 21:35 31:40
#6: 37:50 31:40
#7: 37:50 43:46
数据
df1 <- structure(list(start = c(10L, 21L, 37L), end = c(20L, 35L, 50L
)), class = "data.frame", row.names = c(NA, -3L))
df2 <- structure(list(start = c(12L, 17L, 22L, 26L, 31L, 43L), end = c(15L,
19L, 24L, 29L, 40L, 46L)), class = "data.frame", row.names = c(NA,
-6L))
推荐阅读
- javascript - 在 React 组件中使用 bind() 将参数传递给事件处理程序时,事件处理程序中的参数和“this”指的是什么?
- ajax - 如何在servlet和jsp中对ajax检索的数据执行更新功能
- python - Kivy:弹出窗口只能有一个小部件作为内容(当我导入两个不同的弹出模块时)
- c# - 将 .HasDefaultValueSql("NEWID()") 与 SQLite 一起使用
- c# - 发布包含 jpg 和 json 的多部分请求会导致内部服务器错误和 IIS 上的 win32 状态 64
- python - 用 Selenium 抓取 Amazon - XPath 问题
- assembly - 解释师算子组装
- python - 无法从输入字段中获取整数值
- html - 当特定字符串存在部分工作时突出显示 HTML 正文?
- python - 将 Entry Tkinter 框保存到文本文件