我有以下两个数据帧:
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中完成这项工作?
答案 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)