ist Alles funktioniert, aber es ist sehr langsam mit zwei For-Schleifen iterieren.Join basiert auf einer Spalte und nächste Zeit, die nicht über
Grundsätzlich 2 Datenrahmen, einer mit und IDs und Ereigniszeit. Die andere mit verschiedenen IDs und Lesungen (Wert und Zeitstempel) alle 10 Sekunden oder so.
Ich versuche, eine Tabelle zu einer anderen zu verbinden, indem Sie sowohl die ID, als auch die Zeit in einem bestimmten Intervall vor der Ereigniszeit, sagen wir 20 Sekunden.
Alternativ sind die Daten in einem Oracle-SQL-Server, die, wenn ich die Tabelle Joins in SQL, die funktioniert auch tun könnte.
readingdf <- data.frame(sensorID = c('100001','100001','100001','100001','100002','100002','100002','100002'),
readTime = as.POSIXct(c("2017-07-24 04:08:09 EDT","2017-07-24 04:08:19 EDT",
"2017-07-24 04:08:29 EDT","2017-07-24 04:08:39 EDT","2017-07-24 04:08:09 EDT","2017-07-24 04:08:19 EDT",
"2017-07-24 04:08:29 EDT","2017-07-24 04:08:39 EDT"),tz="EST"),
Value = c('17.5','15.6','12.9','12.1','22.2', '24.5','19.7','20.1'))
df <- data.frame(sensorID = c('100001','100002','100001','100002','100001','100002','100001','100001'),
eventTime = as.POSIXct(c("2017-07-24 04:08:23 EDT","2017-07-24 04:08:25 EDT","2017-07-24 07:04:40 EDT",
"2017-07-24 02:19:30 EDT","2017-07-24 04:37:08 EDT","2017-07-24 04:19:59 EDT","2017-07-24 03:26:49 EDT",
"2017-07-24 03:58:17 EDT"),tz="EST"))
was meinst du Intervall 20 Sekunden? Bitte erläutern. Wenn möglich, können Sie hier die erwartete Ausgabe einfügen? Vielen Dank – Onyambu
Wenn Ihre Tabellen groß sind, sollten Sie den Join im Oracle-Server tun: verwenden Sie etwas wie 'select * von t1 innerer Join t2 on (t1.sensorID = t2.sensorID und readTime <= eventTime und f (eventTime, readTime) <= 20) ',' f' ist eine Funktion, die den Unterschied zwischen zwei Datumsangaben in Sekunden angibt (Sie müssen sie definieren). – Scarabee