Zusammenführen von zwei Datenrahmen in r durch eine gemeinsame Spalte mit nicht übereinstimmenden Datums- / Zeitwerten

Ich möchte zwei Datensätze mithilfe von "Datum / Uhrzeit" -Spalten zusammenführen, die in beiden vorhanden sind (POSIXct-Format: TT / MM / JJJJ HH: MM). Nachfolgend finden Sie Beispieldaten aus den beiden Datensätzen:

# Dataset 1 (dts1)

           datetime   count   period   
1  30/03/2011 02:32      27      561
2  30/03/2011 02:42       3      600
3  30/03/2011 02:52       0      574
4  30/03/2011 03:02       1      550
5  30/03/2011 03:12      15      600
6  30/03/2011 03:22       0      597

# Dateset 2 (dts2)

   datetime         dist car   satd      alt
1 30/03/2011 01:59  23.9   1      3     1.76       
2 30/03/2011 02:58  14.7   1      7     6.36       
3 30/03/2011 03:55  10.4   2      9    -0.34      
4 30/03/2011 04:53  35.4   1      3     3.55      
5 30/03/2011 05:52  56.1   1      7    -0.91       
6 30/03/2011 06:48  12.3   1      4     6.58      
7 30/03/2011 07:48  10.7   1      5     4.18      

Wenn es ein einfacher Fall war, übereinstimmende Zeilen aus den beiden Frames zusammenzuführen, dann einfachmerge(data1, data2, by="datetime") oderrbind() Funktion könnte verwendet werden.

Mein Problem ist jedoch komplizierter als dasZeitintervalle in den beiden Datensätzen sind nicht gleich. Dataset 1 enthält Daten beipräzise 10-Minuten-Intervalle (jede Zeile enthält Informationen zum 10-Minuten-Block, der zum angegebenen Datum / zur angegebenen Uhrzeit endet)dataset 2 enthält Daten beiungefähr 1-Stunden-Intervalle (jede Zeile enthält Informationen aus dem 1-Stunden-Block, der zum angegebenen Datum / zur angegebenen Uhrzeit endet).

Um es noch schwieriger zu machen, gibt es eineZeitinkongruenz zwischen den Startzeiten der Zeilen in den beiden Datensätzen (d. h.dts1: 01/03/2013 10:00:00,dts2: 01/03/2012 09:58:12).dts2 Die Intervalle variieren auch im gesamten Datensatz (± einige Minuten zu beiden Seiten einer Stunde). Ich möchte jede 10-Minuten-Datenzeile in Datensatz 1 mit dem Stundenblock verknüpfen, in den Datensatz 2 passt (zusammen mit allen zugehörigen Spaltenwerten aus dts2). Es wird einige Zeilen geben, die in 2 verschiedene Stundenblöcke passen könnten (d. H. 30/03/2011 03:02), aber ich benötige nur diese Zeilen, um mit einem der Stundenblöcke verknüpft zu werden.

Ich würde gerne mit so etwas enden:

        datetime_dts1 count period     datetime2_dts2  dist  car satd      alt  
1    30/03/2011 02:32    27    561   30/03/2011 02:58  14.7   1     7     6.36      
2    30/03/2011 02:42     3    600   30/03/2011 02:58  14.7   1     7     6.36
3    30/03/2011 02:52     0    574   30/03/2011 02:58  14.7   1     7     6.36
4    30/03/2011 03:02     1    550   30/03/2011 02:58  14.7   1     7     6.36
5    30/03/2011 03:12    15    600   30/03/2011 03:55  10.4   2     9    -0.34
6    30/03/2011 03:22     0    597   30/03/2011 03:55  10.4   2     9    -0.34

Ich habe nach einer Antwort auf dieses Problem gesucht, konnte sie jedoch nicht lösen, und meine R-Fähigkeiten sind nicht fortgeschritten. Wenn mir jemand eine Anweisung geben oder eine Lösung vorschlagen könnte, wäre ich äußerst dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage