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.