2017-02-09 49 views
0

我有以下兩個dataframes:使用「之間」合併dataframes

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與DF1的column_02的column_01已成爲之間df2 column_02和column_03的值。結果將是:

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

在sql中它將是一個連接與一個between子句。但是我怎樣才能在R中完成這件事?

+2

查看'data.table'包並搜索滾動連接。 –

+0

如果你擅長sql查詢,[sqldf](https://cran.r-project.org/web/packages/sqldf/index.html)包可能非常有用。 –

+0

滾動連接是我一直在尋找的術語。謝謝埃裏克。 – Kasper

回答

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) 
+1

或者使用'過濾器(在(pos,start,end)之間)' – zx8754

+0

謝謝Wietze314和zx8754。作品! – Kasper