Ich habe zwei Datentabellen. Ich möchte eine rollende Verbindung machen, aber von einer "kumulativen Art". hier Zum Beispiel zwei TabellenKumulative Look-Back Rolling Join
d1 <- data.table(starttime = c("2011-01-01 15:29:50", "2011-01-01 15:30:03", "2011-01-01 15:40:20", "2011-01-01 15:50:20" ,"2011-01-01 16:30:00", "2011-01-01 16:40:00"),
endtime = c("2011-01-01 15:30:00", "2011-01-01 15:30:15", "2011-01-01 15:40:28", "2011-01-01 15:50:25", "2011-01-01 16:31:00", "2011-01-01 16:41:00"), v = c("A", "B", "B", "A", "B", "A"), m = c(2,3,5,8,9,9), dur = c(10,12,8,5,60,11))
starttime endtime v m dur
2011-01-01 15:29:50 2011-01-01 15:30:00 A 2 10
2011-01-01 15:30:03 2011-01-01 15:30:15 B 3 12
2011-01-01 15:40:20 2011-01-01 15:40:28 B 5 8
2011-01-01 15:50:20 2011-01-01 15:50:25 A 8 5
2011-01-01 16:30:00 2011-01-01 16:31:00 B 9 60
2011-01-01 16:40:00 2011-01-01 16:41:00 A 9 11
d2 <- data.table(time = c("2011-01-01 16:39:50", "2011-01-01 16:00:03", "2011-01-01 16:50:50"),
v = c("A", "B", "A"), mk = rnorm(3))
time v mk
2011-01-01 16:00:03 B -0.2385093
2011-01-01 16:39:50 A -0.4966836
2011-01-01 16:50:50 A -0.4566836
nun für die erste Zeile in d2 sind, sollen Sie zurück von d2 $ Zeit der ersten Reihe suchen, mag ich gleichen d2 $ v in Reihen von d1 Summe von m gegeben erhalten, bis die Summe der Dauer (Endzeit-Startzeit)> 15
Gibt es auch einen Weg, wie ich zählen kann, wie viele Zeilen ich hinzugefügt habe> 15 Sekunden?
so dass im Grunde für i sollte
time v mk m rowsUsed
2011-01-01 16:00:03 B -0.2385093 8 2
2011-01-01 16:39:50 A -0.4966836 10 2
2011-01-01 16:50:50 A -0.4566836 17 2
ähnlich wie diese erhalten
Kann mir jemand helfen, wie ein solches Roll join aufgebaut werden kann? Ich habe viele Reihen, also ist Geschwindigkeit eine Sorge. Bereit, mit XTS flexibel zu sein.
Rolling Join durch was? Sie nehmen Werte von 'd1', die sowohl vor als auch nach den Daten in' d2' liegen. –
Es tut mir so leid, mir war nicht klar, dass die Daten anders waren, ich schaute nur auf die Zeit. Ich habe das Beispiel geändert. Berücksichtigen Sie, dass alle Zeilen das gleiche Datum haben. 01-01-2011 – user2961712
Grundsätzlich sind alle Daten 01.01.2011. Die Zeiten sind gleich wie jetzt gegeben. – user2961712