Comment adhérer à des trames de données basée sur la condition entre les 2 colonnes

Je suis coincé avec un projet où j'ai besoin de fusionner deux trames de données. Ils ressembler à quelque chose comme ceci:

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

J'ai la ligne suivante de code de fusionner les 2 trames de données:

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

Il serait excellent travail, si la variable de temps (heures, & minutes) n'était pas légèrement entre les deux ensembles de données. Est-il un moyen de rendre la colonne "Minute" le match avec "Minute2" si c'est + ou - une minute?

Je pensais que je pouvais créer 2 nouvelles colonnes pour l'ensemble de données:

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

Est-il possible de fusionner les 2 trames de données si "Minute2" correspond à une variable à partir soit de "Minute", "Minute_plus1", ou "Minute_minus1"? Ou est-il un moyen plus efficace pour accomplir cette fusion?

Créer une colonne rounded.time = round(hour + minute/60, digits=n) et essayer d'adapter l'arrondissement n que vous souhaitez avoir +-1 minute de précision. Puis rejoindre par rounded.time
Peuvent obtenir de faux positifs si les temps sont proches, mais je suppose que personne n'en plus ou en moins si minutes ont été accidentellement à proximité.
Je pense que le plyr et data.table paquets pourriez faire cela très simplement. (Je ne sais pas très bien alors je vais laisser ça à quelqu'un d'autre.)
Je ne suis pas sûr que cela va fonctionner. Quelle que soit la définition de l'arrondissement, il y aura une certaine coupure entre les deux groupes, et des mesures individuelles de chaque groupe peut être arbitrairement proche. Par exemple, si vous tour la plus proche à 5 minutes, 12 et 13 seront séparés, même s'ils sont seulement 1 minute d'intervalle.
Vrai! +1 pour @Gregor dplyr solution

OriginalL'auteur heyydrien | 2015-04-28