如何根据2列之间的条件连接数据帧

时间:2015-04-28 18:29:41

标签: r merge dataframe

我遇到了需要合并两个数据框的项目。他们看起来像这样:

Data1
Traffic Source    Registrations    Hour    Minute
organic           1                6        13
social            1                8        54

Data2
Email                     Hour2   Minute2
test@domain.com           6         13
test2@domain2.com         8         55

我有以下代码行来合并2个数据框:

merge.df <- merge(Data1, Data2, by.x = c( "Hour", "Minute"),
           by.y = c( "Hour2", "Minute2"))

如果两个数据集之间的可变时间(小时和分钟)没有略微偏离,那将会很有效。有没有办法让“分钟”列与“Minute2”匹配,如果它是+或 - 一分钟关闭?

我以为我可以为数据集1创建2个新列:

Data1
Traffic Source    Registrations   Hour   Minute    Minute_plus1   Minute_minus1
organic           1               6        13      14              12
social            1               8        54      55              53

如果“Minute2”匹配“Minute”,“Minute_plus1”或“Minute_minus1”中的任何变量,是否可以合并2个数据帧?或者是否有更有效的方法来完成此合并?

1 个答案:

答案 0 :(得分:14)

对于这样的东西,我通常会转向SQL:

Hour

根据您的数据大小,您也可以加入dplyr然后过滤。使用library(dplyr) x = Data1 %>% left_join(Data2, by = c("Hour" = "Hour2")) %>% filter(abs(Minute - Minute2) <= 1)

base

虽然你可以用itraversed函数做同样的事情。