使用"在"之间合并数据帧

时间:2017-02-09 08:16:58

标签: 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-high

我必须将df1与df2的column_04合并,其中df1的column_01与df2的column_01匹配,df1的column_02必须在df2 column_02和column_03的值之间。结果将是:

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

在sql中,它将是一个带有between子句的连接。但是我怎样才能在R中完成这项工作?

1 个答案:

答案 0 :(得分:0)

您可以分两步完成此操作。先是join,然后是filter。我为此使用了包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)