R 使用“合并数据帧”;介于;

R 使用“合并数据帧”;介于;,r,R,我有以下两个数据帧: df1: column_01 column_02 a 3 b 7 df2: column_01 column_02 column_03 column_04 a 1 4 a-low a 5 8 a-high b 1 4 b-low b 5 8 b-hig

我有以下两个数据帧:

df1:
column_01 column_02
a         3
b         7

df2:
column_01 column_02 column_03 column_04
a         1         4         a-low
a         5         8         a-high
b         1         4         b-low
b         5         8         b-high
我必须将df1与df2的列_04合并,其中,df1的列_01与df2的列_01匹配,df1的列_02必须介于df2的列_02和列_03的值之间。结果将是:

df_result:
column_01 column_02 column_03
a         3         a-low
b         7         b-high

在sql中,它将是一个带有between子句的连接。但是如何在R中完成这项工作呢?

您可以分两步完成。首先
加入
,然后
过滤
。为此,我使用包
dplyr

df1 <- data.frame(c1 = c('a','b'),
                  c2 = c(3,7))

df2 <- data.frame(c1 = c('a','a','b','b'),
                  c2 = c(1,5,1,5),
                  c3 = c(4,8,4,8),
                  c4 = c('al','ah','bl','bh'))

library(dplyr)

df1 %>% left_join(df2, by='c1') %>%
  filter(c2.x > c2.y, c2.x < c3)
df1%
过滤器(c2.x>c2.y,c2.x
查看
数据。表
打包并搜索滚动联接。如果您擅长sql查询,则打包可能非常有用。滚动联接是我一直在寻找的术语。谢谢Eric。或者使用
过滤器(介于(pos、start、end)之间)
谢谢Wietze314和zx8754。作品