我遇到了需要合并两个数据框的项目。他们看起来像这样:
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个数据帧?或者是否有更有效的方法来完成此合并?
答案 0 :(得分:14)
对于这样的东西,我通常会转向SQL:
Hour
根据您的数据大小,您也可以加入dplyr
然后过滤。使用library(dplyr)
x = Data1 %>%
left_join(Data2, by = c("Hour" = "Hour2")) %>%
filter(abs(Minute - Minute2) <= 1)
:
base
虽然你可以用itraversed
函数做同样的事情。