Lücken zwischen Intervallen mit data.table finden

8

Ich habe das folgende Problem: Geben Sie bei einer Reihe von nicht überlappenden Intervallen in einer data.table die Lücken zwischen den Intervallen an.

Ich habe dies einmal in SQL implementiert, aber ich kämpfe mit data.table wegen des Fehlens einer Führungsfunktion oder einer Verzögerungsfunktion. Der Vollständigkeit halber habe ich hier den SQL-Code. Ich weiß, dass die Funktionalität in data.table Version 1.9.5 implementiert wurde. wie beim Changelog . Ist das mit data.table möglich, ohne viele Merges und ohne Verzögerung oder Bleifunktion?

Grundsätzlich bin ich nicht dagegen, Merges (auch Joins genannt) zu verwenden, solange die Performance nicht darunter leidet. Ich denke, das hat eine einfache Implementierung, aber ich kann mir nicht vorstellen, wie ich die vorherige Endzeit als Startzeit für meine Lückestabelle bekommen kann.

Zum Beispiel:

%Vor%

Dies führt zu:

%Vor%

Hinweis: Die Lücken werden gleichmäßig über Tage hinweg angezeigt.

    
Snowflake 04.06.2015, 21:51
quelle

2 Antworten

5

Eine Variation von Davids Antwort, wahrscheinlich etwas weniger effizient, aber einfacher zu tippen:

%Vor%

Produziert:

%Vor%

setkey ist nur um sicherzustellen, dass die Tabelle nach der Zeit sortiert ist.

    
BrodieG 04.06.2015, 22:31
quelle
5

Wenn ich etwas nicht verpasse, fehlt dir eine Zeile in deiner gewünschten Ausgabe, also versuche ich, shift von der Devel-Version zu verwenden, wie du erwähnt hast.

%Vor%     
David Arenburg 04.06.2015 22:09
quelle

Tags und Links