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。作品